Skip to main content

Full text of "On Three: OnThree_v1n3"

See other formats











































>i 


^^ 




DOUBLE 






■■■■■■■■■■■■■■ 












^^^ ISSUt 




Volume 

Numbe 
1 


1" 

r3- 


1l 


r 


U11EJMi>1J J/BS 


^^ 










1 1 




k.^ 




n 








fl^^k. .^ ^^ ^^^H ^m ^H I ^ ^ ■ ■■ 








1 1 






^^^^ / / 


d^o r\ 


r\ 


> 


^pril-May 


1 111^ iviaua^iiic 1 \Ji j^f^LJic III y^vviicia aiiu L/^t?i^( 






.r 


$3.0u 






lybcJ 








_. Disk Pak 3: Cataloa vour DOS diskettes 






















, Qr-k/=k£4/HD/-\/^+ /I 
































i 


' Kjyj^^KjLJKjyji \v^iiy L-v-^v^rx : 




































t 


► Changing the Character of 


r tne 






































Apple UOT Ma 

. WPL Tutorial 
. REVIEW ON: 
> Plus much mc 


IMA r 1 IMICI 








































< 


begins 
































-^ 






« 


Everything 








































1 


)re! 












































1 1 








1 ^ 






















































■ai^s 


r— ^^~~^ 




, 










ki 


^ 








■1 
■1 






















1]^?=== 


-^^Zr^^^^^^^^^==^r^^ri^ 
























"""^ ^ ''" ^ — v--^^^ 






















-\\ / ,r»A# 


































i / ^'^ 






















J f'sh 
































1 ™- 
































1 










































ON THREE Presents . . . 




MicrO'Sci Disk Drives 



MICRO-SCI 



Every once in a while a product appears that is so good ON THREE decides to offer it for sale to our 
readers. The Micro-Sci line of disk drives (and the Gameport ///) are the first of these superior type 
products. Byte for byte, these drives offer greater speed and more value than any comparable drive on 
the market today. If you are looking into purchasing an external disk drive for your ///, ON THREE 
encourages you to look into this fantastic product line. 

Expanding disk storage on the Apple /// can be an expensive proposition. 

But Micro-Sci has a better proposition for you, because our disk drives for the Apple /// give you 
greater capacity and performance for every dollar spent. 

And there are no compatibility problems. The A3 is a direct replacement for Disk /// drives, and the 
70-track A73 and 140-track A143 are supplied with a driver that is easily added to the SOS driver 
module, affording extra storage and fast seek rates for all of the programs that run under SOS. 

Talk about compatible! All three are the same size as your built-in drive and they use the same 
diskettes! 

Are all of your slots full? Don't worry, these drives plug right into the back of your /// and they don't 
need a power cord! Up to three extra disk drives can be daisy-chained and they can be mixed in any 
combination of Disk ///, A3, A73 or A143. 

The A3 offers identical capacity to the Disk /// and is an excellent choice for a second disk 
compatibility in the Apple ][ emulation mode. 

At 286 KBytes, the A73 has double the capacity of the Disk /// while the A143 packs 572 KBytes of 
data onto a diskette. With over half a megabyte of storage space, the A143 makes a truly viable 
backup device for the Profile Hard Disk. 

With that large a capacity, many people find that they don^t need a hard disk! Since up to three 
A143's can be used with your ///, you can have over one and three quarter megabytes of data on-line 
at all times! 

ON THREE is pleased to announce the following low, low prices on these great disk drives. 



Suggested List Price: 


A3 

$379 


A73 

$529 


A143 

$659 


ON THREE Price: 


$299 


$409 


$509 


Savings 


$80 


$120 


$150 



To order, use the attached envelope and add $6.50 for postage and handling for each drive ordered. 
Please allow four weeks for delivery. 

Gameport /// 

You don't have to be chained to your job, and neither does your Apple ///. After the working day is 
done, release your computer into the exhilarating world of adventure and challenge with a Gameport 
/// from Micro-Sci, The new Gameport /// game controller adapter lets you use game paddles, 
joysticks and all your favorite Apple ][ amusement packages with your Apple /// computer. The 
Gameport /// is easy to use and simple to install - your only challenge is to conquer the invaders! 

The Gameport /// 

• Allows all games written for the Apple ][ to be used on the Apple ///. 

• Works with all Apple ][ game paddles and joysticks. 

• Allows programs which require a game I/O protection key to run in Apple ][ emulation mode. 

• Can be installed in any slot. 

• Does not interfere with the normal operation of the Apple ///. 

• Package includes: Gameport /// board, Apple ][ Emulation Modification Diskette and complete, 
easy-to-follow instructions (Apple ][ game controllers not included). 

ON THREE proudly sells the Gam^eport /// by Micro-Sci. For only $59.95 you can now get the best 
that the Apple /// and the Apple ][ has to offer. That's $15 off the suggested list price so don't be left 
out, place your order today! Please use the attached envelope for ordering and remember to add $2.50 
for postage and handling. 



ON THREE 



III 



TABLE OF CONTENTS 



III 



The Editor's Block: 

Bob Consorti 



Ask THREE: 

(Letters to the F^ditor) 



/// 



FEATURES 



III 



DOS 
File List: 

Bob Consorti 



10 



Changing the Character of the 
Apple Dot Matrix Printer: 

Timothy S. Smith 13 



Assembling (ON) the ///: 

Martin Nichols 



Products Received: 



. 17 Some new, some old — all good 



.19 



/// 



DEPARTMENTS 



III 



WPL Tutorial: 

Use it! _ 

Bob Consorti . . . 



20 



/// to the Max: 

Making those horses run! 
Al Evans 



REVIEW ON: Everything 

Pkaso, Quick & Easy Data Master, 
ProFile & Backup ///, Critical 
Path Scheduhng 
Bob Consorti 24 



Three Shorts — Fini! 

More graphic demos for your 
Devin Sexson 



22 



32 



Micro-Sci disk drives, Gameport /// Inside Front Cover 

Lazarus ///, ON THREE O'Clock, 

Disk Of the Month #1 & #2 Inside Back Cover 

Next Month in ON THREE 

Disk Verify+ . . . Formatting disks from Basic . . . Keyboard Change . . .Color fix. . .Paddle fix 
. . . Reviews: GL-PLUS, MICROTEK Dumpling, VersaForm, Stock Portfolio System . . . 
tutorials . . . and more! 



April-May, 1983 
Volume 1 Number 3 

Editor/Publisher: 

Bob Consorti 

Managing Consultant: 

Joseph Consorti 

Cover Design and Artwork: 

Wilham V. Padula 
Cranford, New Jersey 

Interior Artwork: 

Virginia Carol 

Typesetting Services: 

The Typesetting Company 
Van Nuys, Cahfornia 

Printing Services: 

Ojai Printing & 
Pubhshing Company 
Ojai, Cahfornia 



ON THREE - THE Reference Source for the 
Apple is published somewhat monthly by ON 
THREE, P.O. Box ,S825, Ventura, California 93006. 
P\)r a copy of our Author Guidelines, please send a 
self-addressed stamped envelope (20 cents) to the 
above address. 

Subscription information: U.S. - $.'U) for 12 issues. 
For first class mail, please remit an extra $10. 

All foreign subscriptions should include additional 
postage in the following amounts: 

$8 for Canada and Mexico 
$12 for Central America - Caribbean 
$16 for South America - Europe - Africa 
$19 for Asia - Pacific Islands - Australia 

Funds should be remitted in either U.S. dollars 
drawn on a U.S. bank. International Money Order, 
or by a direct bank draft. 

( I roup Rates are as follows: 

2 - 9 members, $28 per subscription 

10-49 members, $25 per subscription 

50 + members, $22 per subscription 

(^iroup purchases must have one mailing address. 

Return postage must accompany all manuscripts, 

drawings, and diskettes submitted if they are to be 

returned, and no responsibility can be assumed for 

unsolicited materials. 

All letters sent to ON THREE will be treated as 
unconditionally assigned for publication and are 
subject to ON three's right to edit and com- 
ment editorially. 

Dealer inquiries are welcomed. Please write to the 
above address for volume pricing and terms. 

ON THREE is a registered trademark of ON 
THREE. Apple, Apple 1| , Apple ///, Disk // / and 
ProFile are all registered trademarks of Apple 
('omputer, Inc. Micro-Sci, Gameport /// are regis- 
tered trademarks of Standun Controls, Inc. ON 
THREE O'clock and Lazarus // / are registered 
trademarks of ON THREE - The Apple /// 
Magazine. Opinions expressed in this magazine 
are those of the individual authors and not neces- 
sarily those of ON THREE. Entire contents 
copyright ' 1982, 1983 by ON THREE. All rights 
reserved. 



ON THREE 



/// /// /// /// /// /// /// /// /// /// /// /// /// 



/// 



The Editor's Block: 



Bob Consorti 



III ell, we're back asaini Thanks for all of your support, I don't 
lAJ know how we would do it without your help. Vet, even with 
the tremendous support Apple /// users have siven us, puttins 
together a quality publication is both hard work and time- 
consuming. For those of you wondering, we will go to a monthly 
format as soon as possible. 

The biggest problem we have encountered to date is in getting 
enough articles to fill up an issue. Since I'm sure we all want to see 
an issue a month very soon, I am requesting that if you can submit 
an article, please do. We need your help! 

Now that my blood pressure has gone down a bit, let me 
introduce you to ON THREE'S latest products. Joining the ever 
popular ON THREE O'Clock and the DOM *1 are SIX new 
products! 

Are you looking into buying another disk drive? Have we got a 
deal for you! ON THREE is proud to announce that we sre now 
selling the Micro-Sci line of disk drives for the Apple ///.Very easy 
to install and use, these drives don't use up a slot and are com- 
pletely compatible with all Apple /// programs. The A1 43 packs 
572K Bytes of data onto a diskette. That's over half a megabyte! 

If you have a ProFile and are tired of wasting two hours and 40 
floppy disks to back it up, Micro-Sci disk drives are just what 
you've been waiting for. And if you don't have a hard disk but feel 
limited by the standard old 140K disk drives, try out the A143 - 
you'll love it! 

Sounds pretty good, nght? Well the bottom line is the price. 
Only $509 for over half a megabyte of fast data storage. If you dre 
just looking for a second 140K floppy disk drive, the A3 is a direct 
replacement for the Disk /// and is pnced at only $299. Last but 
not least, the A73 provides double the storage of the standard 
Apple drive and costs just $409. 

A more complete description of these three disk drives is found 
on the inside front cover. Check them out, you'll be glad you did! 

Three down, three to go! The next new product is the Game- 
port/// byMicro-Sci. It letsyou use game paddles, joysticks and 
ALL your favorite Apple ][ amusement software with your Apple 
///. Easy to install and use, ON THREE offers the Gameport /// for 
only $59.95. See the inside front cover for more details. 

The next to last item is the second Disk Of the Month! Following 
our commitment to bringing you the best products at the lowest 
possible price, it contains all the useful programs in this month's 
issue, and is priced at only $9.95. You can now list Apple ][ files 
from your /// as well as changing the characters of your Apple 
DMP or Prowriter. What a buy! 

Last and certainly not least is the most important Apple /// 
utility that will ever come out. I'm talking about none other than 
Lazarus ///, the package that will recover the files you acciden- 
tally deleted. 

Following Murphy's Law, the one file you accidentally delete 
wi 1 1 be the only one you haven't ever backed up. With Lazarus /// 
you will never again have to retype months and months of impor- 
tant data. Just insert the diskette with the deleted files and Lazarus 
/// will recover it. 

Completely user friendly, this program has on-line help and 
tutorial screens to give help to you novices out there. It even works 




with the ProFile and other 

disk drives! If you place 

your order today, you can 

get itforthe pre-introductory 

price of $24,95. Similar programs for the Apple ][ have been sold 

for over $100, so I think you'll agree with me when I say it's a steal! 

See the inside back cover for ordering details. 

Switching now to a more complicated subject, many people 
have written to me saying that Apple has not been ven/ supportive 
of the ///in the past. Most everyone also seems to think that Apple 
is going to drop the /// completely. While even Apple will admit 
it's having problems with the ///, they dre not going to 'drop-it'. 

I won't try and make excuses for Apple, that's not my job. Let me 
just say that they dre aware that there is a senous problem and they 
are attempting to correct it. People ask me how and when, but I 
can't answer that one. I n my present position I have access to some 
information about future Apple /// offerings. However, I am 
bound by non-disclosure agreements so I can't say exactly what. 
But they are definitely commited to the Apple ///'s future, so 
don't worry. 

Now it's time to turn your back on al I the problems of the world 
and look inside the latest issue of ON THREE. One of the things that 
ON THREE does is answer your questions. Look over the Letters to 
the Editor this month. There is a heck of a lot of information on 
those pages that you can use. Talk about information, look over our 
review section this month. Now that's a lot! 

This month Timothy Smith shows how to change the characters 
that your Apple DMP or Prowriter prints with. A very nice utility 
program is included that lets your DMP print with any of the screen 
fonts. Now your printer can use the fancy Gothic characters, or the 
modern Byte character set. Any Apple /// screen font can be 
used! 

For those of you who want it, with the information and programs 
in the article DOS File List, you can list the files on any Apple ][DOS 
diskette. Just another handy uti I ity from the folks at ON THREE. Also 
included dre some handy invokable routines by Martin Nichols. 

Al Evans is back with '/// to the l\Adx'. In this article he showsjust 
what makes the horses run! The long awaited WPL tutorial com- 
mences this month. Here you will learn just what WPL can do for 
you! In the next issue. Earl Curlson and Louis Hanson will resume 
their popular tutonals. 

Next time I'll show you a program to do a complete verification 
of your disks and more. Martin Nichols will bnngyou a routine to 
format disks in Basic, and maybe even a special on Pascal! Reviews, 
reviews and more reviews. And would you beleive it?, two hard- 
ware modifications for your ///. One to allow color in the emula- 
tion mode and another to fix the game paddle problem. We will 
even squeeze in an arti':!e on spreadsheet! ng - from Basic! 

Before I leave you, let me put out a call to all Apple /// users 
who think they know their machine: ON THREE is presently setting 
up a HOT-LINE service to help Apple /// users overcome their 
problems. If you know enough to answer questions, please write 
or give us a call. In a very short time I hope to have enough of our 
readers willing to spend a little time answering questions that any 
Apple /// owner could dial a relatively local number and get 
immediate help. 



The editor's Block continued on poge 9. 



April/May 1983 



ON THREE 



/// 



/// 



/// /// /// /// /// /// /// /// /// /// /// /// 



Rsk THR€€: 



(letters to the €ditor) 



Dear Bob, 

What a GREAT publication — ON THREE. Initially thousht you 
were spoof ins about not havins enoush time to type in the 
prosrams . . . thus buy the disks. But you're risht! These dre MUST 
haves for the wealth of information contained thereon. The mini- 
tutorials are sorely needed and dre the best yet to come out 
specifically for the ///. 

We have a situation which could be addressed to you or Louis 
Hanson for a clue to overcome. Durins the past two years we've 
worked up some 37 intesrated prosrams producins a neat pack- 
ase "Municipal Tax Manasement Systems" for the local tax collec- 
tor which produce the tax bills, keep track of ownership chanses, 
maintain the assessor's records, post payments, late charses, inter- 
est penalties, etc. We've marketed two sets so far, and dre receivins 
inquires from owners of other brands of computers. As a result, 
we're in the process of convertins the prosrams from the orisinally 
written Basic to Pascal. The data base on which these were written 
is a 2500 account BasicData file. We're wonderins if you know of a 
utility to convert Basdata files to Pasdata files so that we do not 
have to manually type the files all in asain. Let me tell you, THAT is 
some chore! 

Interestins clock you have . . . considerably different than our 
Thunderclock. With the Thunderclock we've learned to date-stamp 
a prosram with a little text file routine, thoush it takes several 
seconds to apply. Haven't tried to access it in Pascal yet so can't 
tell whether it can be done. Any thoushts on this will certainly save 
us considerable expenmental time. 

Yourfledslins "ON THREE" is movins risht to the heart of s^ttins 
the best out of the ///. It deserves ALL Three'ers strons and 
continuins support. You certainly have ours. 

Very Truly Yours, 

Coville Woodburn 
New Hampshire 

Dear Mr. Woodburn, 

rm ver/ glad that you are enjoying the magazine, we are 
doing our best to fill it with a wealth of information. I'm also 
pleased to see that you like the tutorials. We are planning quite 
a few more in the near future. 

On the subject of the Basic data files, read pages 213 
through 216 in the Pascal Programmer's Manual, Volume 1. 
Here the description of the way Pascal handles different types 
of files should help you find a solution to the conversion 
problem. 

You see, to convert a Basic text or data file to a Pascal format, 
you must have planned out a file data and record structure for 
the conversion. You can read in a record from the Basic data 
file into the correct record format and then write it out in your 
defined data structure format. 

The ON THREE O'clock interfaces with SOS directly, no 
special drivers are needed and no complicated date-stamp 





routines are neccessary. Whenever you first save a file and 
whenever you modify it, these times and dates are automati- 
cally put into the file's director/ entry. 

Your Basic programs can also use the reserved words 'DATES' 
and 'TIMES' to provide you with an up to the second read-out 
on what time it is. From Pascal you can access the internal date 
and time by using the Applestuff Unit as described on pages 
50-52 in the Pascal Programmer's Manual, Volume 2. 

Thank you again for your support. 

Dear ON THREE, 

At last, a masazine and a sroup of people dedicated to 
in-depth support of the fantastic Apple///! Enclosed is my check 
for a one-year subscription. Please be sure to notify me when the 
reprintoftheJanuaryissueisavailable— I definitely wanttoobtain 
a copy. 

All this enthusiasm, and I don't even have my Apple /// yet! I 
expect to set it soon, though— perhaps this week. My enthusiasm 
for ON THREE is because up to now I've been frustrated with how 
slowly support for the /// has been developing. But the /// is 
such a beautiful machine that I decided to "rough-it" and buy it 
instead of an Apple //e. Now I find your organization is available 
to help me over the rough spots. I have already passed knowledge 
of your existence on to others and I will work hard at this in the 
future because I agree the more support we can get, the more it 
will benefit us all. (Maybe I can talk the local stores into a list of their 
Apple /// buyers so I can contact them myself.) I also hope to 
make contributions to your magazine in the future. 

Incidentally, I am pleased to see so much emphasis on Pascal in 
ON THREE, since that is my preferred language and one of the 
reasons I'm buying an Apple ///. 

So sign me up, and let me know when the January reprint is 
ready. 

Sincerely, 

Hobart S. Cable, II 
Ohio 

Dear Mr. Cable, 

Your enthusiasm is great! ON THREE is here to do just what 
you say - help the Apple /// user over the rough spots. I'm ver/ 
glad we can help, so if you have any questions, please do write 
again. 

Gentlemen, 

Finally there appears information on the Apple ///! Please rush 
subscription information plus details on how I may order all back 
issues. 

Bless you for coming to the aid of us Apple /// users left 
completely out in the cold by Apple Computer, Inc. 



April/May 1983 



ON THREE 



/// /// /// /// /// /// /// /// 



/// 



/// 



/// /// 



/// 



/// 



Now maybe I can cancel some of those other Apple oriented 
magazines that give only 3 or 4 pages of Apple /// info. 

Thanks, 



Charles Miller 
Pennsylvania 



Dear Mr. Miller, 



I'm glad that we can help you. One of the big reasons I 
started ON THREE was because I was sick of paying a few 
dollars for a magazine with only a page or two of Apple /// 
information. 

To put it quite bluntly, I'm glad you're cancelling those other 
subscriptions. It's really their own fault for not addressing the 
needs of the Apple /// community. 

Gentlemen, 

On12Apnl 1983, 1 purchased a 256K Apple/// system along 
with an Apple dot matrix printer and other assorted accessories. 
One of the things which convinced me to buy was your premiere 
issue of ON THREE which happened to be in the showroom. After 
seeing just that one issue, I felt it was just the type of publication 
which would help me get the most out of my system and also to 
get my family involved. Sign me up! 

A problem of interest to new buyers: Since I elected to buy the 
Apple dot matrix printer, I needed a grappler interface to link to 
the printer. At first, my salesman said I just had to read the manuals 
to figure it out. As you are probably aware, this was not the case. 
After spending most of the weekend scouring through manuals, I 
was told the fol lowing Monday that my salesman had it on diskette 
for me. Well, he came out and installed it for me and everything 
seemed to be going smoothly. That evening, every boot diskette 
with the grappler.driver on it locked the system up. We spent two 
weeks swapping out systems, trying various versions of SOS, 
placing calls to Charlotte, NC, moving the system from one side of 
the house to the other, etc. Nothing seemed to work. 

By accident last weekend, I happened to turn my printer on 
the system was locked up, and voila!, it booted. After three weeks 
the salesman making housecalls and me talking to all kinds of micro 
we finally figured out. The Apple dot matnx pnnter has to be on 
in the select mode in order for the system to boot without interven- 
tion. I n other words, once you walk i nto your computer room, turn 
the printer on and place it in the select mode BEFORE you try 
booting your Apple/// up. Hopefully, this information will save a 
of heartache and ill feelings after your initial purchase. 

Enclosed will find my check for a subscnption to ON THREE. 
Best wishes on new publication. 

Sincerely, 

Del Brashares 
Alabama 

Dear Mr. Brashares, 

That's the kind of letter I like to hear! I know ON THREE has 
been having some impact on the sales of the Apple ///, but 
only letters like yours can assure us that this is really happening. 

The note about the Apple Dot Matrix Printer and the 



Grappler device driver is something that I'm sure many of our 
readers liked to hear. I'm always amazed by the problems that 
can happen when interfacing two different pieces of 
equipment. 
Thanks again for your letter. 

Good Morning! 

Enclosed please find my check covering the next twelve issues 
of your publication. 

After reading issue ^2, I suddenly felt that I was no longer 
stranded on a lonely island. 

I have owned my/// since last July, and have not been success- 
ful in receiving any communication from Apple or for that matter 
the dealer who sold me the machine. A search of computer stores 
and bookstores for material related to my Apple are futile. I was 
resigned to thinking that we who have the /// sre alon.^ and the 
problems we had were ours to deal with alone. 

Thank you for a fine magazine which appears to have the 
necessan/ knowledge to solve the problems we have been 
encountering. 

Very Truly Yours, 

Michael Gordon 
Florida 

Dear Mr. Gordon, 

With the introduction of ON THREE, Apple /// users will not 
have to feel alone any more. We're here to help you so if you 
have any problems in the future please write again. 

Dear IV\r. Consorti, 

You have at least one more supporter in your efforts to get the 
/// its due place in the microcomputer world. I also get Call- 
A.P.P.L.E.andSoftalk, two fine publications, but their pnmary focus 
IS on the ][ in its many forms and I long for some more attention to 
my machine. 

Do you have an effort to build a group library, perhaps one that 
could be accessed by phone'i^ I can report that "Patching Apple 
/// Pascal" (J. Jeppson,Softalk, Feb. 1983, p. 190) worked imme- 
diately to make my ProFile the Pascal System volume. 

In your review of Apple Writer /// you warn that it cannot use 
more than 1 28K. This is an important bit of information that I would 
suggest you include in your "Products Received" feature. 

I am enclosing a SASE foryour Author Guidelines as well as my 
check for my subscription. 

Sincerely, 

Harry T Hanson 
New Jersey 

Dear Mr. Hanson, 

We are planning a bulletin-board type service in the near 
future for those of you with modems. Your ideas on this subject 
will be most welcome. 

Dr. Jeppson's Pascal Patch does work very nicely. Just like 
Quark's Catalyst, it allows you to put all your Pascal files on the 
ProFile. 



April/May 1983 



ON THREE 



/// 



/// 



/// /// /// /// /// /// /// /// /// /// /// /// 



Dear Sir, 

Congratulations. You have achieved that rdre blend of speaking 
to many varied interests v^/hile making the total publication of 
interest to everyone. I don't think I ever read a magazine from cover 
to cover until your issue of ON THREE arrived. 

I am enclosing a check for a subscription, clock and disk of the 
month. I don't want to miss anything. 

Again, thanks for filling a void for those of us with Apple ///'s 
that havejust been waiting foryou to come along. I look forward to 
future issues. I will also start promoting other subscriptions. We 
can't let this grand start you have made wither and die for lack of 
support. 

Sincerely, 

Patrick E. Thomas 
Iowa 

Dear Mr. Thomas, 

Thank you for the letter, we are doing are best to interest 
everyone. Since word of mouth is the best type of advertising, I 
very much appreciate your telling other Apple /// owners 
about ON THREE. 

Dear t\Ar. Consorti, 

Enclosed is my $30 check for a subscription to your magazine. 

I have been using the PFS series of programs for quite a while 
and I feel rather qualified, therefore, to be critical of the grade 
pointyou gave PFS: Report. In my mind I feel that a B- is too low. In 
fact, an A would be appropriate. I purchased both an Apple /// 
and a TRS-80 II to test them side by side for an application in my 
avacodo grove. The Apple /// won hands down principally 
because of PFS: Report. The TRS-80 is now sold. 

Kindly send me a copy of your "Author Guidelines." I'd like to 
squeeze some time and write an article on how to make those 
programs really work. 

Let me join your well wishers in congratulating you on a fine 
publication. There is no question you d^e filling a need so I hope 
your subscription file becomes overloaded quickly. 

Perhaps you are open to suggestion. Why not have a department 
for novice owners'?' I'll bet general interest articles and instruction 
on programming fundamentals, at a level that the novice can 
might just be the kind of bait you need to get them hooked. Say it is 
intermediates but pitch it to the novices. The experts can skip it if 
want. Mull it over. 

Sincerely, 

Brooks Lyman 
California 

Dear Mr. Lyman, 

Thank you very much for your recent letter. We are always 
open to constructive criticism and I welcome your views on 
the PFS series of software. I look forward to your upcoming 
article submission. 

Your ideas on novices has been duly noted and as early as 
the June-July issue we will adopt some of these ideas. An entry 



level column will soon appear to help guide the novices over 
the sometimes rough waters of learning the Apple ///. 

Dear ON THREE, 

It was really nice to see the new publication dedicated to the 
Apple ///. I thought you might like to know that there is a dedi- 
cated Apple /// SIG operating online SOURCE at PUBLIC 21 
DIRECT. The user group has been operating for over a year. We do 
charge a membership fee of $20 and the SIG is closed to non- 
members. I can be contacted through S^AAIL (to ST0823) for 
membership information and sample SIG material. 

The SIG maintains an online interactive bulletin board and a 
twenty plus item data base containing programs and other matenal 
for downloading. As an example, the data base contains an auto- 
logon dialer for use with hard disk, and even a game. The bulletin 
board provides an online interactive forum for exchange of infor- 
mation, for example a notification of a soon to be released co- 
processor card (emulates IBM PC), and for online help with Apple 
/// specific problems. We maintain a listing of over 1 75 Apple /// 
native programs (no CP/M programs) currently available. The 
membership consists of some highly qualified programmers, 
hardware types, business users, and even an Apple rep. or two. 

ON THREE has received ven/ favorable reviews from our 
members. Keep up the good work! 

Sincerely, 

Ernest Raba 
North Carolina 

Dear Mr. Raba, 

I'm glad to hear of the Apple /// SIG on the SOURCE. As 
Apple /// users we need to band together in every way shape 
and form to help each other. 

Dear hAr. Consorti, 

Thank you for an excellent publication. I have recently installed 
your ON THREE O'clock and I am very happy with it, thanks. 
Another item you might consider offering would be 64K RAM add 
on chips for those of us with 128K RAM Apple ///'s. There dre 
many 200ns Apple compatible chips that will work with the 5 volt 
memory board in the ///, all of them much cheaper than the 
Apple pnce of $28/chip. 

With regard to the question of utilities to edit Business Basic 
programs that was raised by John Miller in the March issue, most 
Apple ///owner's have a fantastic editor available in Apple Writer 
///. This program can be used to global search/edit/replace as 
well as insert and move whole blocks of Basic code. In short, all of 
the features that are available to edit text can be used to edit Basic 
programs, including all of the Word Processing Language. The trick 
Is to convert the Basic program i nto a text f i le that Apple Writer /// 
read. The following statement inserted as the first statement in the 
that you want to edit will do the tnck: 

CREATE "Program. Name",TEXT:OPEN#1, AS OUTPUT,"Program- 
.Name",TEXT:OPEN #1 AS OUTPUT,"Program.Name":OUTPUT#1: 
OUTREC=255:LIST 1 TO 63999:CLOSE:END 

The procedure for doing this is outlined on page 33 of the Basic 



April/May 1983 



ON THREE 



/// 



/// /// /// /// /// /// /// /// 



/// /// 



/// 



/// 



/// 



manual. The "Program. Name" should be different than the name 
given to the original Basic program and should include the path- 
name if you want the text file saved on an alternate disk dnve. The 
reserved v^ord OUTREC sets the record length for the I isti ng to 255 
rather than the standard 80 characters that appear on the screen. 
This keeps the carriage returns from messing up the listing on 
Apple Writer///. Once you have entered this line as the first line of 
your program, RUN it and it will create a text file with the name of 
"Program. Name". Now all that is left is to boot Apple Writer ///, 
load your text file, and edit away. When you have finished editing, 
save your file back to disk. To convert your file back to a Basic 
program, boot a Basic Disk and just type: 

EXEC Program. Name 

The disk drive will whirr for a while and each line of text will 
generate a ')' as it is being read into the Apple. When the disk drive 
stops, type LIST and your edited creation is now available to be 
RUN or SAVEd back to disk as a Basic program. Note that if you have 
any unintelligible lines that Basic does not recognize when you 
EXEC the text file, you will be unceremoniously given an error and 
the whole operation will stop. You must then go back to Apple 
Writer to find your fatal flaw. 

There are some interesting things that can be done with WPL on 
Apple Writer/// (ie. auto line numbering, subroutine libran/ inser- 
tion, etc.), but I have found that the most beneficial use of Apple 
Writer is with very long programs that require major surgery. 

Now perhaps someone out there can help me^ I am interested 
in getting FORTRAN running on my ///, but I have not found any 
way to do it yet. Also I am interested in contacting/// owners who 
dre using the Source. Perhaps we could get together and exchange 
programs and tips, if so please contact me via SMAIL at CM 759. 

Sincerely, 

Enc M. Moeller 
Montana 

Dear Mr. Moeller, 

Thank you for your letter, Tin pleased that you like the clock. 
In respect to the 64K RAM chips, there is a small problem. 

The memory boards for the Apple /// are not all the same. 
The 1 28K machines that were shipped in the besinning had 
three rows of memory chips. Later on, these were replaced 
with a memory board that had ony two rows of chip sockets. If 
both of these rows were filled you had a 256K machine, 
otherwise you only had 1 28K. 

Since you can't just plug in chips to the old 128K memory 
boards to get 256K, there is no way I could offer a memory 
increase update at this time. With the Apple /// CP/M card 
you can run FORTRAN on your ///. However, you will have to 
do quite a bit of patching to get it to work. 

There is an Apple /// user group on the Source, it's operat- 
ing at PUBLIC 21 DIRECT. They do charge a membership fee of 
$20 and it is closed to non-members. Contact Ernest Raba 
through SMAIL at ST0823 for membership information and 
sample material. 

Dear Sir, 

Enclosed is my check and order for one of your ON THREE 



O'clock's for my Apple ///. 

In addition, I keep hearing rumors that Apple maybe discontinu- 
ing support of the ///. Do you have any information as to their 
plans with respect to the equipment and future software. I did 
receive a letter which indicated a new version of Apple Writer/// 
with a speller package was coming out in 1983. 

Also, I am comsidering upgrading my 1 28K Apple /// to 256K. 
Do you have any recommendations as to how I might do this at 
reduced cosfi^ I would also like to have CP/M capablility. 

And, do you have any information on the DataFax file program 
for the ///^ Do you have any recommendations on a good terminal 
program to use with the Hayes 1 200 Smartmodem'i^ Do you know 
of a Hi-Res Dump program for the Epson MX-100 with Graftrax'i^ 

Appreciate your assistance and will look forward to receiving 
the clock unit. 

Sincerely, 



Richard N. McKinney 
Illinois 



Dear hAr. McKinney, 



Trust me, Apple is not going to discontinue support of the 
///, it is far too fine a machine. I do have some knowledge of 
future plans for the /// but I'm not at liberty to discuss them. 
However, what I know has convinced me that Apple is not 
going to drop the ///. 

The new version of Apple Writer /// should be available 
within a short time. Likewise, Apple Speller /// will be avail- 
able very soon. At this time the only way to upgrade your 
machine from 1 28K to 256K is the Apple way - high price! 

I also wish that Apple would lower the cost of the upgrade. 
The actual cost of the chips and memory board is no doubt 
much less than $250, so I can't see the reason for such a high 
margin on this item. You should be able to get an Apple /// 
CP/M card from any Apple dealer. Currently, this is the only 
Z-80 card that works with the ///. 

We don't have access to the DataFax file program for the ///, 
so I can't give a recommendation on it quite yet. On the 
subject of a terminal program for the /// and a Hayes 1200 
Smartmodem, Apple has a number of good communications 
packages for the ///.The one you should buy is contingent on 
what you are going to use it for. Your best bet would be to ask 
your local Apple dealer. They should know the one to suit your 
needs. 

Alpine Computing, Inc. sells a Hi-Res dump program for the 
and the Epson variety of printers. We are going to do a review it 
next time around. Check the 'Products Received' section of 
April-May issue for Alpine's address and phone number. 

Dear Sir, 

I have recently purchased an Apple /// and an Epson AAX-100 
printer. The salesman who sold me these, convinced me that a 
interface card would be sufficient. Since that time, I have read 
articles, including the Epson owners manual, which suggests that 
we should hook up the Apple /// with a UPIC. Would you explain 
the difference between the serial and UPIC^ What limitations will I 
face with the serial card'?' 

lam happy there is finally a magazine for Apple ///owners. My 



April/May 1983 



ON THREE 



/// /// /// /// /// /// /// /// 



/// /// 



/// 



/// /// 



/// 



wife and I are looking forward to your next issue of ON THREE. 

Sincerely, 



Thomas Spreitler 
Illinois 



Dear Mr. Spreitler, 



First of all, I hope that you are talking about the built-in serial 
port that the Apple /// has and not a plug in card because a 
serial interface to an Epson is fine, I used the built-in serial port 
to connect to my MX-100 for over two years without any 
problems. 

If you are talking about a plug in serial card that your dealer 
sold you, I'd bring the darn thing back to the dealer and 
demand a refund, because he is cheating you! If your Epson is 
set up to receive a serial signal, it will work fine hooked up to 
the built-in serial port and does not need another serial or 
parallel card. 

The only reason to buy and use any plug in interface card is 
to connect a piece of hardware to your computer. Since the 
MX-100 works fine hooked up to the built-in serial port, there 
is no need for a plug in card except in the case that you are 
already using your serial port to connect another item such as 
a modem to your ///. 

If you have any further questions, please don't hesitate in 
writing again. 

Gentlemen, 

I am enclosing my check for $30 to cover a one year subscription 
to ON THREE. For some reason, I had not heard that this magazine 
was about to be published and I just happened to run into the first 
copy at my local computer store. 

While I am in the process of enrolling, may I also send along two 
Items that you may be able to help me with. 

My Apple /// is connected to a NEC 7720 Spinwriter. After 
considerable experimentation I found that it would work fine if the 
NEC cable was connected to the modem eliminator cable that 
came with the Apple. However, the '.PRINTER' driver as originally 
set up by Apple could not be used. Instead a more complete 
description of the driver configuration had to be supplied by using 
the '.RS232' driver and alternating the parameters, this however is 
not my problem - as I said, this combination is now working fine. 

In Apple ][ emulation this same set up gave continual data error 
signals which I finallyascribedtothe fact the "driver configuartion" 
in the emulation mode (which I could not access) did not provide 
proper "handshaking" with the printer, so it overflowed the printer 
buffer with data and stopped it. By choosing 300 baud when the 
emulation disk is booted, and setting the printer for 300 baud, all 
went well, but relatively slowly. 

Can you offer a solution that will permit me to operate my printer 
at 1200 baud when I am using the Apple ][ emulation mode'r' 

The second item concerns my displeasure with a software 
package - Apple /// Business Graphics sold by Business & Profes- 
sional Software Company of Cambridge, Mass. I had a hard time 
getting this package to print anything but when I finally figured out 
the correct cabling, it transmitted text and numbers okay. I got no 
help in working this out from Business & Professional Software. 

I am still unable to print out graphs and the attitude at Business & 
Professiona Software is that they have no time to get into my 



problem, and besides, they don't have an Apple /// with which 
to experiment! When called upon to produce a graph, several 
pages of paper are fed through the printer before activity starts. 
Then the graph that is produced is misshaped. That is, the axes sre 
not uniform and the tics dre not evenly spaced. The points appear 
on the paper but a line that is supposed to connect these points 
will miss them. 

I have tried everything that Business & Professional Software has 
suggested to no avail and I just thought that you and your readers 
would like to know about this problem with Apple /// Business 
Graphics, thank you for any help that you may be able to give me. 

Sincerely, 

John Lomartire 
Connecticut 

Dear Mr. Lomartire 

Unfortunately I can't give any real solution to your interfac- 
ing problem in emulation mode, but I will put the question to 
our readers. Hopefully someone will respond with an answer. 
You might try pressuring your local Apple reps, to see if Apple 
is going to release a new emulation diskette that could fix your 
problem. 

On the subject of Apple /// Business Graphics, I have had 
similar complaints against this company and product. My only 
advice here is to take the thing back to your dealer and get him 
to make it work with your system. If it won't work for him, 
demand a refund. 

It's crazy to pay for something that doesn't work and I'm sure 
your dealer will do everything in his power to rectify the 
situation. 

Dear hAr. Consorti, 

First let me say that I am delighted to have ON THREE available. It 
was and is much needed. You can count on my full support. I plan 
to call attention to it whenever and wherever I can. Although I 
certainly would prefer a monthly magazine, I would also prefer a 
bi-monthly one as against none at all if there has to be a choice. 

One suggestion and request. It would be nice if ON THREE 
would let us know what isgoing on at Applethat is relevanttothe 
///. For instance, it was through pure luck I found out several 
months ago that the Utilities Diskette has been updated. And only 
tenacity and perseverance at continually inquiring led me to find 
out a few weeks ago that the long awaited SOS Reference Manual 
and Device Driver Writer's Guide were available. Neither Apple nor 
their distributors have been of much help in this regard. One 
exception, it was through Apple I found out about ON THREE. 

A question. There is an Applegraphics II software which allows, 
in particular, one to do interactive 3-D graphics. As I understand it. 
It IS in P-Code. I also understand that much Apple ][ Pascal software 
can be used on the Apple ///. Would anyone know for certain 
whether or not Applegraphics II can be used on the Apple /// 
with PascaP 

Re: things I'd like to see in ON THREE. A discussion of the 
emulation software, particularly in relation to possible modifica- 
tions. For instance, could the 48K limitation be removed'?^ There is 
plenty more memory available, could a language card emulation 
be written'i^ If not, I would like to understand why. Something else I 
would be interested in reading about is a hardware modification 



April/May 1983 



ON THREE 



/// 



/// 



/// 



/// 



/// 



/// /// 



/// 



/// 



/// 



/// 



/// 



/// 



/// 



which would allow me to use a cassette with my Apple /// or 
with the Apple ][ emulation mode. 

Sincerely, 

Andre M. Weitzenhoffer 
Oklahoma 



Business applications and accounting packages would be of 
greatest interest to the undersigned. 

Sincerely Yours, 

Charles F. Schreiber, Jr. 
California 



Dear Mr. Weitzenhoffer, 

Thank you very much for your support, we need all the 
coverage we can get, and the best kind is a satisfied customer! 
We will go to a monthly format as soon as possible, hopefully 
by August. 

In the future we will be telling you of relevant happenings in 
the /// world (updates, new products, etc.). For now let's just 
say that even with my connections it's hard to find these things 
out. Thank you for telling me of the Utilities diskette update, I 
haven't heard about it. 

The new SOS manuals are great, if you were using the old 
photocopied manuals, your programming life will be much 
easier now! They are very nicely typeset with a lot of great 
information. 

Since the /// has the Apple ][ Turtle-Graphics Library UNIT, 
you could use Applegraphics ][ on the /// if you had access to 
the source code and could then re-compile it. Even if you 
could get the source from Apple (you can't) you would be 
under some serious restraints. Among them, only the Black/ 
White 280 by 192 graphics mode is available. The routines are 
also much slower than the Apple ][ counterparts. You can't use 
it in emulation mode because it needs a 64K system to 
operate. 

We are planning a series on the emulation mode and modifi- 
cations to the emulation disk. I haven't studied it but I don't 
believe that a language card emulation could be written due 
to the format of the ///'s memory. Once we publish this letter 
maybe someone could also respond about the lack of a 
cassette port in the emulation mode. 

If you have any further questions, please do write again. 

Gentlemen, 

THANK GOD! Something for the Apple ///! Please send it ASAP. 

Thank You, 

J.B. Moore 
New York 

I couldn't resist putting that one in! 

Dear l\Ar. Consorti, 

Enclosed is my check to purchase a subscription to ON THREE. I 
found a copy of the January issue and am very impressed. 

I encourage you to maintain the advertising policy indicated in 
your open letter to the readers. This is one way a non-computer 
expert will have to evaluate products offered by vanous manufac- 
tures. At least one will know if they are advertised in ON THREE a 
knowiedgable computer person has reviewed the product and 
found that it does not contain matenal flaws. 



Dear Mr. Schreiber, 

Thank you for your letter, I appreciate your comments 
regarding our advertising policy. We will have reviews on some 
major accounting packages in the very near future. 

Dear ON THREE, 

If my information is correct, there dre approximately 80,000 
Apple /// users throughout the country. Now, that's a user's group 
of potentially immense power and it behooves Apple Computer 
to inform that community of the existence of ON THREE. With the 
recent drop in pnce of the 256K Apple /// and the burgeoning of 
significant software, the number of ///ers should grow well 
beyond the 100,000 mark, thus making ON THREE'S challenge 
clean to produce the best and the most informative computer- 
related publication around. You've made a good first step in that 
direction. 

Sincerely, 

Michael Sexson 
Montana 

Dear Mr. Sexson, 

At this point in time there are approximately 1 00,000 Apple 
/// users out there. You're right in your assumption that there 
is a potential for a very powerful user's group. With help from 
people like yourself, Apple /// users will soon band together 
for their common interest. 

Sometime in June of this year, Apple will do an Apple /// 
user mailing that will include a notice about ON THREE. The 
problem is this: Out of 1 00,000 Apple /// users out there, less 
than 20,000 have sent in their registration cards. 

Since those cards are the only way Apple knows where 
Apple /// users are, the mailing will reach less than a fifth of 
the Apple /// populace. Therefore, if you know of other 
Apple /// owners, tell them to mail in their registration cards. 
It's probably the only way they will ever find out about future 
Apple /// products information. 

Dear Bob, 

As a busi nessman I look on my /// as a tool that either works for 
me, or is ineffective when used for the tasks for which it was 
purchased. After a short, initial 'Software Shufle' my/// has per- 
formed admirably. I am most satisfied. While I am almost entirely a 
user of 'Pre-Canned' software, your publication will fill several 
needs that have not been met by anyone else to date. 

The first and most important of these needs is one that you 
addressed inyoureditorial in the Feb. -March issue. That is, primar- 
ily, to bnng pressure to bear on Apple Corp. to release all technical 
info, on the ///, to help those of us who have spent sizeable 



April/May 1983 



ON THREE 



/// 



/// 



/// /// 



/// 



/// 



/// 



/// 



/// 



/// 



/// 



/// /// 



/// 



dollars on their product to use it more effectively. Apple has not 
exactly bent over backwards to assist either myself, or my local 
dealer in answering several question/problems that have arisen 
since my purchase. 

The non-existant SOS manuals have been a major irritant to me, 
as has been the non-existant Backup ///, and the non-existant 
Clock/ Calendar. Now that Backup /// is online, and I am buying 
your clock the minor irritants dre over. The major one remins, 
however. Apple Computer Corp. still is considerably less suppor- 
tive than the good software houses (State-Of-The-Art, and Quark 
come immediately to mind), and yet I spent a lot more money with 
Apple than I did on software. Have you tried calling tech. support 
with a question? "This is technical support, all of our technicians 
are busy right now. Please leave your name and question, and if we 
getanyfreetime in the next decade, we will return your call . . ." 

The second need that you will/are filling is the need for a forum 
of ideas. At three dollars per issue, all I have to do is find one little 
tidbit like Apple Writer ///'s I/O error as the result of writing too 
many times to the disk, and your magazine has paid for itself. All 
the other stuff is gravy! 

Finally, just by existing you are telling Apple Corp. that we Apple 
/// users give a damn what happens to the ///, and dre clamoring 
for support. Thanks to you we now have our own 'Micro-Lobby' in 
the hallowed halls of Cupertino. 

Keep up the good work, I lookforwardtomysubscnption. Now 
if you could just do something about that SOS manual. 

Sincerely, 



Ted Simpson 
North Carolina 



Dear Mr. Simpson, 



For what it's worth, I think the only thins that can be said 
about Apple's support of the /// is the followins line. Apple 
has grown so big, so quick that it is having problems keeping 
up with the demand for help in these matters. 

Much of it isn't Apple's fault, their rep. firms around the 
country and even the local dealers haven't supported the /// 
as they should. I've talked with the people at Apple and they 
are aware of the problem. It's just going to take some time 
before it's corrected. 

The SOS manuals are available now. You will probably have 
to order them from your dealer though. The product number is 
A3L0027. After working with them for a couple of months I 
don't think they are for the average user. They contain much of 
the technical details of SOS and are therfore hard reading for 
most people. /// 

Products Received: continued . . . 
STOCK PORTFOLIO SYSTEM 

The STOCK PORTFOLIO SYSTEM by Smith Micro Software is a 
personal investment accounting, record keeping and control sys- 
tem designed to provide you with the facts you need to make 
informed investment decisions. It covers a wide range of invest- 
ments, including stocks, bonds, options, multiple CD, bank, credit 
union and money market accounts. 

It IS menu driven and very flexible. Vou can let the STOCK 
PORTFOLIO SYSTEM access the Dow Jones News/Retneval service 
to get stock quotes. The terminal mode allows you to reach out 



beyond your Apple for direct access to the nation's financial news 
and other sen/ices. 

The STOCK PORTFOLIO SYSTEM has a suggested retail price of 
$185 and is available for the Apple II, Apple /// and IBM PC. 

Smith Micro Software, P.O. Box 604, Sunset Beach, California 
90742.(213)592-1032. 

VersaForm 

VersaForm is the Business Form Processor. Utilizing the familianty 
and structure of existing paper forms, VersaForm accelerates the 
speed and accuracy of processing information. Because it emu- 
lates current paper handling procedures, VersaForm is very easy to 
tailor to specific uses. 

This package makes it possible foryou to doyour business data 
handling tasks on a computer, using what you already know. 
Instead of requiring that you enter the world of the programmer, 
VersaForm works in the familiar world of business forms and deals 
with your data just the way you do now - on paper, but with the 
speed and power of a computer. 

A complicated system, the VersaForm package takes a while to 
get to know, but it is worth it. To be reviewed in the June-July issue. 

Applied Software Technology, 14125 Capri Drive, Suite 4, Los 
Gatos, California 95030. (408) 370-2662. /// 

REVIEW ON: Everything: continued. 

Equipment used in this review: 

128K Apple/// 

1 external floppy drive 

1 ProFile hard disk 

Program: CRITICAL PATH SCHEDULING for the Apple /// 

Version: Revision ^4, 4/6/82, Release 2.0 

Contents: Boot and program diskettes. User's manual. 

Programming language: Business Basic 

Operating System: Standard SOS 

Copy Protected: No 

Disk Warranty: 90 days 

Backup disk included: No 

Cost: $495 

The Bottom Line 

CRITICAL PATH SCHEDULING 

Performance: Good 
Documentation: Good 
Ease of use: Good 
Error Handling: Good 
Over All Rating: B 



The Editor's Block: 



Continued , 



One last item before I go. We will publish notices of any Apple 
/// club or user group, so if you know of one - please tell us! The 
more local help an Apple /// user can get the better. 

That's all for now. Remember, if you have any questions or 
problems that your dealer can't answer - Ask ON THREE! /// 

April/May 1983 n 





ON THREE 








/// /// /// /// /// 


/// /// /// /// 


/// 


/// 


/// /// /// 


DOS File List 








by Bob Consorti 



Many Apple /// utility programs allow the user to access in 
onewayoranotherApple][ DOS files. But none of them (to 
my knowledge) let the user see what files are on the DOS diskette. 
To the average Apple /// owner this means that they must do one 
of two things, 1 - Remember the exact file name, or 2 - Use the 
emualtion disk to boot the DOS disk and then do a catalog! 

Since Apple ][ file names can be longer (30 vs. 15) than their 
Apple /// counterparts, the chance of getting it right is slim. Also, 
booting the emulation disk takes time and is a big hassle. What's a 
poor Apple /// user to do^ 

The answer is quite simple - read on! Since the utility programs 
mentioned above usually are written in Pascal I wrote a routine in 
that language that allows you to list the files on a DOS 3.3 diskette. 
Justas in the last issue we will implement itasa UNIT so that all your 
Pascal programs can use it. 

Listing *2 is the actual Pascal Intrinsic UNIT that does the work. 
Now all programs wntten in Pascal can give the user the option of 
seeing the catalog of an Apple ][ DOS diskette. Like the SOS file 
lister from the last issue, it will send the output wherever you want 
('.CONSOLE','. PRINTER', disk-file . . .) and list the files on an arbi- 
trary sized viewport. 

Program Listing ^1 is an example of a Pascal program that uses 
the unit to list Apple ][ DOS files. If you have been following along. 
It IS very similar to the SOS file listing test program from the last 
issue. Very simply, itjust calls the routine list_DOS_Directon/' with 
the appropriate parameters and the unit returns after listing the 
DOS directory (if possible). 

The test program and the DOS file listing UNIT use many of the 
same routines of the SOS file lister from the last issue, so I will not 
go into details of how the program works. The Pascal structure of 
DOS file entries was taken from the November/December 1981 
issueofCall-A.P.P.L.E. Dr. Wowrote the onginal Apple] [implemen- 
tation of the DOS file list, and I did all the Apple /// changes. 

If you want to use this program and UNIT with your other Pascal 
programs, first type in Program Listing ^2 and compile it with the 
name 'DOS. STUFF'. Next type in Program Listing *1 and compile it 
with the name 'TEST'. Before you can use the program, you must 
first add the UNIT to your SYSTEM. LIBRARY. 

Going through it step by step, at the mam command level 
X)ecute the file 'LIBRARY.CODE'. When the screen prompts you 
with 'Output file — ►', enter 'NEW.LIB'. Make sure that the diskette 
you d^e putting 'NEW.LIB' on has enough room to hold the sum of 
the old library and a little bit more. When the screen prompts you 
with 'Input file — ►', enter '.D1/SYSTEM.LIBRARY'. Now type '=' to 
copy all the libran/ segments from the old libran/ to the new one. 

When the disk drives have stopped making noise, type 'N' to 
choose a new file and then 'DOS. STUFF' and now press 'RETURN'. 
Next look on the screen under the prompt 'Output file - ' and 
find the first two slot numbers that aren't occupied. Type 1 
<space> 1 St empty slot number <space> and then 2 <space> 
2nd empty slot number<space>. Finally type 'Q' to quitand then 
enteranycopynght notice you wantto include. Lastly, use the filer 
to remove the old 'SYSTEM. LIBRARY' and transfer this new library 
onto your system diskette with the new name 'SYSTEM.LIBRARY'. 

Once you have correctly installed it, all of your programs can use 
It. Now you can execute Program Listing *1 and test out the new 
UNIT by cataloging DOS diskettes. If you don't want to type in the 
programs, or don't have Pascal you can purchase the April-May 



Disk Of the Month which has all the necessary programs in it. Once 
again that's all for now. Next time, who knows'f^ I've been working 
on assembly language routines that will enable programs to save 
and load text screens to and from disk to memory, h^opefully itwill 
be completed in time for the next issue. /// 

DOS File List: Program Listing #1 

PR06RAH DOS List; 



{ 4tt««fftf«tt«ttift»tft#ttt«tf«ftff«ttt»*tf«ffft«f«*fff»«ff»ftfffffff«ftt«ff« 
( t 

{ t Diik Pik3: List it - DOS List Stuff Test Proqrii ! Copyright 1983 by 
z : : !.- 1 ft THREE 

by Bob Consorti ! April-Hiy, 1983 



This prograi uses the Intrinsic unit 'DOS List Stuff to list the 
contents of my DOS directory. Note thit'you can define the nueber 
of lines to be listed per page. Thus, you can set a vieNport and 
list the files according to the size of that text nindoH. 



{ ♦#ft»«t»#ff#»#f»#####*f#«#t#»«*»#f ♦##♦♦♦###♦*#♦##♦♦♦§#####*###♦♦♦♦♦*#♦# 

USES DOS List Stuff; 



{ Contains the routines to list a DOS directory 

{ You iust install it into your SYSTEH.LIBRARY. } 

{ See article for instructions. } 

{ Causes a beep on the internal speaker } 

{ Sets the top of the currently defined viewport } 

{ Sets norial video output (Wnite on Black) } 

{ Sets inverse video output (Black on Mhite) } 

{ The ASCII nuiber of the ESCAPE character ) 

{ HoMS the cursor and clears the vienport ) 



CONST Bell = 7; 

Top_vie»«port » 2; 
norial - 17; 
inverse > 18} 
Escape » 27; 
Clear_viewport « 28; 

TYPE Counter « INTE6EH! 

VAR Out Path. Nui Str: STRING; { The output files ) 

In Rue, Error'code: INTE6ER; ( returned by the Unit DOS List.Stuff } 
Lines on «indo«: INTEGER; ( The nueber of lines in the current viewport ) 



PROCEDURE Set titles; 
VAR i: Counter; 



{ Sets the lain page heading for the entire prograi ) 



BE6IN 
WRITE (CHR (Clear viewport)); 
NRITE ('Disk Utility Pak3M; 
eOTOXY (66. 0); 
WRITELN ('Copyright 1983'); 
WRITE ('by Roiert Consorti'); 
60T0)(Y (6fi, 2); 
WRITELN ('by ON THREE'); 
FOR i :« 1 TO 10 DO 



WRITE (' 



-'); 



WRITE (CHR (Top viewport)) 
{ of PROCEDURE Set titles } 



END; 



PROCEDURE Print Error; 
VAR Ch: char; " 



( Routine to print out the error lessage } 



BE6IN 

WRITELN (CHR (Bell)); 

WRITELN ('WARNIN6: Error f, Error code); 

60T0)(Y (0.23); 

WRITE (CHR (inverse), 'Press any key to continue', CHR (norial)); 

READ (KEYBOARD, Ch) 
END; { of PROCEDURE Print Error } 



FUNCTION Str_to_int (nue.str: STRING): INTEGER; 

VAR Place_nui, Teepjnt: INTEGER; 
i, Po5_cnt: counter; 

BEGIN 
Tup int:» O; Pos cnt :■ 0; 
FOR I :> LENGTH (Rue str) DOHNTO 1 DO 
BEGIN 
Place nui ',' ORD (Nui str [i]) - ORD CO'); 
Pos cnt :■ Pos cnt + I; 

Teip int :» Teip int + TRUNC (PWROFTEN (Pos cnt 
END; " 
Str to int :« Teip int 
END; T of FUNCTION SEr to int ) 



D) ♦ Place_nut 



PROCEDURE Get Paths; 
BEGIN 

WRITELN (CHR (Clear viewport)); 

WRITELN ('(RETURN for ".CONSOLE", ESCAPE RETURN to exit)'); 

WRITE ('Enter where I should send the listing -> '); 

READLN (Out Path); 



10 



April/May 1983 



ON THREE 



/// 



/// /// 



/// 



/// 



/// 



/// 



/// 



/// 



/// 



/// 



/// 



/// 



/// 



writeln; 

IF (LENGTH (Out Path) » 0) THEN 

Out Path := TCONSOLE'; 
IF (Out Path [1] > CHR (Eicapi)) THEN 

EXIT TPROSRAH); 
MRITELN CEnttr th9 unit nuibtr of the disk to list '),' 
WRITE ('Built in disk is 4, 2nd drive is 5, etc. -> '){ 
READLN (Nui Str); 
In Nui := SEr to int (Nut Str) 
ENDi"{ of PROCEOURE 8tt_Patfis } 

BEGIN { Nam prograi > 
Set.titlfH 

Linis on windon := 20; { There are twenty lines on this viewport } 
REPEAT " 
Get.Paths; 
Error codt :« Oj 

List Dos Directory (In Nui, Out Path, Lines on MindoN, Error code)} 
IF (Error_code <> 0) TREN 
Print Error 
UNTIL (2 + 2 <> 4) 
END. { 0^ PR06RA« DOS.List } 

DOS File List: Program Listing #2 

UNIT D0S_Li5t_Stuff; 

f»«ffftttf*ift»«ft«tft«ftHf**f#4tf»ttftt«ftf««t««ff«t«ft4«*«t«tt4«f»««ff 
f «_. _ 

t Disk Pak3: DOS File List ! Copyright 1983 by I 

I I Q d THREE! 

* by Bob Coniorti I April-Hay, 1983 I 



* This Intrinsic Unit gives any Pascal prograi the ability to list the 

* files on any Apple ]L DOS diskette. 

i 

* Original Pascal definition for the DOS file structure is froi the 

* the Noveiber/Deceiber 1981 edition of Call-A.P.P.L.E. by Dr. Mo. All 

* Apple /// changes and enhancetcnts by Bob Consorti. 

* Please read the article and the prograi List It to see how to install 

* and use this Intrinsic Unit. 
t 

fff«fff«t«ttft««t#»*ftt«#f»«t«««f«f«««»it«*«f*4tf«««»f«4f««««f*tMf4ft««tf4 



IE+ } 



{ This coipilir option allowf for privatt files within the UNIT } 



NTRINSIC CODE 25} { Only one staient; files are private to this UNIT } 
{ because of the 'E+' coipiler option shown above. } 

NTERFACE 

PROCEDURE List DOS Directory (VAR Unit Nui: INTEGER; VAR Out Path: STRING; 
VAR Line8_on_window, Error: INTEGER); 

IHPLEHENTATION 

tt«««ff«tff«*ffi«tfft#fff«f4«ff«f«i««»tf«tt«fff«ttfff4ff4f«ff4«fftf«f*«ft4 

The procedurt 'List.DOS Directory' it PUBLIC and can be used by your 
Pascal host prograi as follows: 

INPUT to List DOS Directory: 

1) Unit Nur- THc Unit Nuibcr of the disk drive with thi DOS disk. 

2) Out_Path - Nhere to send the listing. 

3) LinM_on_window - The current nuiber of vertical lines in the 
viewport. Used to dettriine where to lake a 
page break when listing to the '.CONSOLE'. 

Output frot List DOS Directory: 

1) The listed 3irectory. 

2) Error - The error code (as indicated by lORESULT) for the last 
coipleted Input/Output operation. 

ttf«»4*f«««*tff*t«««fff«««ftf«ft«f«««4f«M«*Mf444f«*«Mf4f*«4M44*M«M« 

PROCEDURE List DOS Directory; 

CONST noriil » 17; { Sets norial video output (Nhite on Black) ) 
inverse « 18; { Sets inverse video output (Black on Mhite) > 
t«c » 27; { Ascii value for the key 'ESCAPE' } 
clear_viewport « 28; ( Hoies the cursor and clears the viewport } 
Dos.iax > 30; ( Naxiiui length of i DOS file nan } 

im 

Byte = 0..255; 

Dirrangt « 0..105; { Range of entries in a DOS directory } 

Sectbuffer « PACKED ARRAY CByte) Of Byte; 
Blockbuffer« PACKED ARRAY CI. .5123 OF Byte; 



Link = PACKED RECORD { Used to designate track/sector coibinations ) 
Tracknui: Byte; 
Sectnui: Byte 
END; 

Dosfilekinds ' ( DOS file types } 

(Volinfo, Unknown, Dftext, Df integer, Applesoft, Binary); 

( >*ai:i' foriat for the inforiation contained in a DOS directory entry } 

DosDirentry = PACKED RECORD 
CASE Dfkind: Dosfilekinds OF 
Volinfo: { This is the voluie info } 



(Dunitnui: Byte; Dnuientries: Dirrange); 
Unknown, Dftext, Dfinteger, Applesoft, 
Binary: 
(Filejsl: Link; { Location of the files Track-Sector list ) 
Locked: Boolean; ( Designates whether the file is locked } 
Naie: STRING [Dos tax]; 

Sectorcount: Byte! { Nuiber of sectors allocated } 
END; 
Dosdirectory = ARRAY [Dirrange! OF DosDirentry; 

VAR 

Device: TEXT; { Where to send the listing > 

Dosdir: Dosdirectory; { The current DOS directiry } 

loerror, Line^count: INTEGER; 



{ If an error occurs, leave the unit } 
{ with an appropriate error nuiber. } 



PROCEDURE Trap 10 error; 
BEGIN ' ■ 
IF (lORESULT <> 0) THEN 
BEGIN 
Error :» lORESULT; 
CLOSE (Device); 
EXIT (List DOS Directory) 
END ■ ' 
END? { Of PROCEDURE Trap 10 error > 



PROCEDURE Set Out device; { Sets the appropriate output file } 
VAR i: Byte; " ' 

BEGIN 
IF (LENGTH (Out Path) > 0) THEN 
BEGIN 
Error :» 7; (An illegal Pathnait ) 
EXIT (List DOS Directory) 
END " ' 
ELSE 
BEGIN 
FOR i :« 1 TO LENGTH (Out Path) DO 
IF (Out Path [i] IN ['a^.'z']) THEN 
Out Pith [i] := CHR (ORD (Out Path [13) - 32); 
IF ((Ouf Path <> '.CONSOLE') AND TOut Path <> '11')) THEN 
IF ((Out Path <> '.PRINTER') AND (Out Path <> '.SPRINTER') AND 
(Out Path <> '.PPRINTER') AND (Out Path <> '16')) THEN 
IF"(POS ('.TEXT', Out Path) » 0)'THEN 
IF (LENGTH (Out Patfi) < 11) THEN 
Out Path :■ CONCAT (Out Path, '.TEXT'); 
(IIOCHECK- } " ■ 

RENRITE (Device, Out Path); 
CLOSE (Device, LOCK)[ 
Trap 10 error; 
REHRlTE~(Device, Out path); 
{$IOCHECK+ } 

Trap 10 error 
END " ■ 
END; { Of PROCEDURE Set.Out .Device } 

PROCEDURE New Page (Neisage: STRIN6); 
VAR Ch: CHAR;" 

( Proipts the user to press a key for wre files, or to end } 
BEGIN 

GOTOXY (0. 23); 

MRITE (CHR (inverse), Message, CHR (norial)); 

READ (KEYBOARD, Ch); 

WRITE (CHR (clear viewport)) 
END; { Of PROCEDUR£~New_page } 

PROCEDURE Check console; { Checks for various options } 
BEGIN 
IF ((Out Path <> '.CONSOLE') AND (Out Path <> 'tlM) THEN 

WRITE!'.') 
ELSE 
IF (Line count ^ Lines on window) THEN 
BEGIN ■ " " 
New_page ('Press any key for lore'); 
Line count :> 2 { Tne end of a page - so laki a new one. } 
END " 
ENDI { Of PROCEDURE ChKk.console } 



FUNCTION Readtrksec (Trksec: Link; VAR Sb: Sectbuffer; 

VAR lotrror: INTEGER): Boolean; 
{ this function reads the sector nuiber 'Trkstc. Sectnui' fro« 
tracknuiber 'Trkstc. Tracknui' on disk drive nuiber 'Unit_Nui' } 

VAR 



ilock: Blockbuffer; 
Blocknui, Offset: INTEGER; 



BEGIN 
With Trksec DO 
BEGIN { Coipute the half-block corresponding to the desired sector } 
IF (Sectnui IN [0. 153) THEN 

Blocknui :» Sectnui 
ELSE 

Blocknui :* IS - Sectnui; 
IF (ODD (Blocknui)) THEN 

Offset :» 256 
ELSE 

Offset :« 0; 
{ Now coipute blocknui offset froi track } 
Blocknui :> (Blocknui DIV 2) + 8 « Tracknui 

A -I /M 4AOO ^^^' ^ ^^^^ ^'''^"c DO > 

April/ May 1 983 Program listing continued on next poge. 1 1 



ON THREE 



/// 



/// 



/// /// 



/// 



/// 



/// /// 



/// /// 



/// 



/// 



/// 



/// 



{II-} 

UNITREAD (Unitnui, Block, SIZEOF (Block), Blocknui){ 

lotrror :« lortiultl 

IF NOT (loerror = 0) THEN 

Readtrksflc :* Falss 
ELSE 
BE8IN { Write into tht sector buffer ) 
KOVELEFT (Block [Offset ♦ 1], Sb, SIZEOF (Sectbuffer)); 
Readtrksec := True 
END 
END; { Of FUNCTION Readtrksec ) 



PROCEDURE Displayentry (De: Dofdirentry)! 
BE6IN 
WITH De DO 
BEBIN 
IF Locked THEN 

KRITE (Device, '§') 
ELSE 

WRITE (Device, ' '); 
CASE Dfkind OF 
Dftext: WRITE (Device, 'Text file'); 
Df integer: WRITE (Device, 'Integer '); 
Applesoft: WRITE (Device, 'Applesoft'); 
Binary: WRITE (Device, 'Binary '); 
UnknoHn: WRITE (Device, 'Unknoitn ') 
END; 

WRITE (Device, Sectorcount: 6, ' '){ 
WRITELN (Device, Naie); 
Line Count '.* Line_Count + l; 
ChecE console 
END ■ 
END; { Of PROCEDURE Displayentry } 



PROCEDURE Displayheaderf 
BEGIN 

WRITE (Device, ' Type'); 

WRITE (Device, ' Sectors': 11); 

WRITEUi (Device, ' File naee'); 

WRITELN (Device, ' 

END; { Of PROCEDURE Displayheader } 



PROCEDURE Displaydir; 
VAR 

Cuisectors: INTEGER; 

Count: Dirrange; 

BEGIN 
Cuisectors :>0; 

IF (DosdirCOl.Dnuientries * 0) THEN 
BEGIN 
WRITELN (Device, 'The directory is eepty!'); 
NeN Page ('Press any key to continue') 
END ■ 
ELSE 
BEGIN 
Displayheader; 

FOR Count :» 1 TO Dosdir [Ol.Dnuatntries DO 
BEGIN 
Displayentry (Dosdir [Count]); 
Cuisectors :« Cuisectors + Dosdir [Countl.SKtorcount; 
END; 
WRITELN (Device); 

WRITE (Device, Dosdir [Ol.Dnuientries,' files on disk, '){ 
WRITE (Device, Cuisectors,' sectors in use'); 
We« Page ('Press any key to continue') 
END " 
END; { Of PROCEDURE Displaydir } 



PROCEDURE Catalog; 
CONST 
Nextlink « 1; 

Zerobase ^11; 
Entrylength«35; 
Kaxindex - 7; 



{ Relative byte 1 of directory sector is link to 
the next directory sectory } 
{ First byte of file info in a directory sector ) 
{ DOS directory entries occupy 35 bytes } 
{ Naxiiui of 7 directory entries in a sector } 



FUNCTION Eodirsector (VAR Index: Indexrange; VAR Dirsector: Sectbuffer; 

VAR Entrybase: Byte): BOOLEAN; 
VAR 
Nofile: BOOLEAN; 

BEGIN 
Nofile := True; 

WHILE (Nofile AND (Index < Naxindex)) DO 
BEGIN 
Index :> Index ^ l; 

Entrybase := Zerobase + (Index - 1) ♦ Entrylength; 
Nofile :« (Dirsector [Entrybase! IN [0, 2551) 

end; 
Eodirsector :> Nofile 
END; { Of PROCEDURE Eodirsector } 



PROCEDURE Fill_Dir.Entry (VAR De:Dosdirentry; VAR Eb: Entrybuffer); 
CONST 
Offset « 4; ( Relative byte 3 is the beginning of the file naie } 

VAR 
J, Kind: Byte; 
Nonblank: O..Dos_iax; 

BEGIN 
WITH De DO 
BEGIN 
Filetsl.Tracknui :» Eb [13; ( Here is the track nuiber } 
Filetsl.Sectnui :« Eb [23; ( Here is the sector nuiber } 
Kind := Eb [33; { Here is the file type } 
IF NOT ((Kind HOD 128) IN [0, I, 2, 43) THEN 

Dfkind :« Unknown 
ELSE 
CASE (Kind HOD 128) OF 
0: Dfkind :< Dftext; 

:= Dfinteqer; 
Applesoft; 
Binary 



{|R-} 
{$R+) 



l: Dfkind 
2: Dfkind 
4: Dfkind 
END; 
IF ((Kind DIV 12B)=1) THEN 

Locked :« True 
ELSE 

Locked :* False; 
FOR J :> TO (Dos lax - 1) DO 
BEGIN ~{ Set the high bit Ion } 
Eb [Offset f J3 := Eb [Offset + J3 NOD 128; 
{ NoM. el innate any Mierd characters } 
IF NOT (Eb [Offset * J3 IN [Space.. Tilde]) THEN 
Eb [Offset i J3 :- Space 
END; 
{ Find the leftiost trailing blank in the naie field } 
Nonblank := -SCAN (-Dos lax. <> ' ', Eb [Offset + Dos lax - 13); 
{ Non blank«0 if and only if there are no trailing blanks ) 
{ Initialize the length of 'naie' } 

Naie [03 := CHR (Dos.iax - Nonblank); 



Space 
Tilde 

TYPE 
Indexranoe ' 
Entrybuf+er 

VAR 



- 32; { ASCII space } 
>126; { ASCII Tilde } 



O..Naxindex; 

' PACKED ARRAY [1. .Entrylength] OF Byte; 



Sectorindex: Indexrange; 
Entrybase: Byte; 



Dir Link: 
Dir"Sector: 
NexEentry: 
Entrycount: 



Link; 
Sectbuffer; 
Entrybuffer; 
Dirrange; 



FUNCTION Eodir (Dirlink: Link): BOOLEAN; 
BEGIN 
With Dirlink DO 
Eodir :« ((Sectnui » 0) AND (Tracknui 
END; { Of FUNCTION Eodir ) 

12 



0)) 



( Finally love in the naie } 
NOVELEFT (Eb [Offset3. Naie [13, LEN6TH (Naie)); 
Sectorcount :» Eb [343 ( Here is the sector count (HOD 256) } 
END { With De DO } 
END; { Filldirentry } 

BEGIN { Catalog ) 
WRITE (CHR (clear viewDort)); 
IF ((Out Path <> \ CONSOLE') AND (Out Path <> '11')) THEN 

WRITE I'Writing.'); 
WITH Dir Link DO 
BEGIN ' 
Tracknui :» 17; ( Beginning track of the DOS directory ) 
Sectnui :s 15 ( First sector of the DOS directory > 
END; 
Entrycount :» 0; 
WHILE NOT Eodir (Dir Link) DO 
BEGIN 
IF NOT Readtrksec (Dir,Link,Dir.Sector, loerror) THEN 

Trap 10 error 
ELSE " " 
BEGIN 
Sectorindex :■ 0; 

WHILE NOT Eodirsector (Sectorindex, Dir Sector, Entrybase) DO 
BEGIN 
HOVELEFT (Dir Sector [Entrybasel, Nextentry, Entrylength); 
Entrycount :« Entrycount+l; 
Filldirentry (Dosdir [Entrycountl, Nextentry) 

END; { Of ELSE BEGIN } 
WITH Dir Link DO 
BEGIN " 
Tracknui :« Dir Sector [Nextlinkl; 
Sectnui := Dir Sector [Nextlink+13 
END 
END; 
WITH Dosdir[03 DO 
BEGIN 
Dnuientries :» Entrycount; 
Dunitnui :- Unitnui 
END; 
Displaydir 
END; { Of PROCEDURE Catalog } 



April/May 1983 



Program listing continued on page 18 



ON THREE 



/// 



/// 



/// 



/// 



/// 



/// 



/// 



/// 



/// 



/// 



/// /// /// /// 



Changing The Character 

Of The 

Apple Dot Matrix Printer. 

(and the Proujriter) 



by Timothy S. Smith 



Introduction: 

When I first purchased my Apple /// many moons 330 I was 
very impressed at the ///'s ability to change its video character 
fonts so easily. Then when I purchased my Apple Writer /// 
program, there they were again, gothic, slant, stop and inverse 
character fonts, but alas only for my video viewing pleasure. Then 
recently I purchased the new Apple DMP (Dot Matrix Printer). 
Hope of gothic characters in my text again appeared on the 
horizon. But then I began to read the 27 page Apple DMP Owners 
Manual. The DMP manual is by far one of the most disappointing 
efforts I have ever seen from Apple. Yet, hope lives on in spite of 
adversity. While I began to study the small folded DMP reference 
card, I said to myself "what's this under character commands. Load 
Custom Character(s)'^" Light at last! 

With the sliver of support from the DMP reference card I began 
to experiment with transferring the screen font data to the printer. 
This proved to be very difficult since not enough information had 
been provided with the "Operator's ManuaT'to operate this fea- 
ture of the Dot Matrix Printer. After some investigation I found that 
my authorized Apple dealer had the information I so desperately 
needed, printed in an Apple products manual dated June 24, 
1982. Oddly enough, I had found most of the data entry pattern 
prior to gaming the additional dealer support. 

Technical: 

If you don't care how it was done and just want to try it, skip 
ahead to "Operation". Before transferring the video font files from 
the disk to the DMP you must examine the nature of the data in the 
fi le. The video character fonts are made up of a matrix 8 bits high by 
7 bits wide. This is illustrated on page 166 of the Standard Device 
Drivers manual. In the font file for each of the 128 possible char- 
acter representations are 8 bytes of data, one for each of the 8 rows 
high. Because the screen is scanned from the top down, so dre the 
font format bytes. The extra bit in each row, the high order byte, 
determines the inverse display condition. 

The normal DMP character font on the other hand is constructed 
from left to right due to the mechanical action of the printer. 
Therefore the bytes of data for the DMP are set 1 column of data at a 
time. The low order byte is the top edge of the character, allowing 
the high order (bit 7) to determine an underline. Which 8 of the 9 
DMP print wires are used is determined by whether or not the 
character font uses decenders or not. 

I chose the Pascal language to construct the conversion program 
due to It's extremely structured nature. This allows for faster more 
orginized data transfer. 

I n converti ng the video character font for the DMP the first order 
of business was to create a matnx for the entire character set. An 
array of 1 28 character definitions is read into memory. Each defini- 
tion IS in Itself 8x8 bits. Therefore the array is CH [CR, Row, Column] 
OF 0..1 , where CH is the entire matrix set. CR is the ASCII value of the 
character defined by Row and Column. Each entry in the array is 
either a or 1 (cell bit off or on). The font file is read using the low 
level Blockread function. All of the Bytes are automatically con- 
verted into a large single dimension array by the use of the, PACKED 



ARRA/OFCI, variable. Once read into the buffervariable the font 
cell bits can be transferred to the multi-dimension matrix array CH. 
Now you have a complete character set in memory in bit image. 
This bit image could be edited and restored in any order, even 
re-saved to the same file from which it came. 

The reason I have placed all of the font data in memory, as bits in 
an dHdy, is so that the font cell definitions can now be saved in a 
different byte structure. Remember the printer must receive its data 
from the left side, not the top as the console. Transmitting the 
character font from memory to the printer is now easy. Just play out 
the bits in a different order creating a new series of 8 bytes for 
each character. But wait, the video font is only 7 bits wide. The 
console will automatically provide 1 dot space between charac- 
ters, but not so with the DMP. The 8th byte is to provide spacing 
between characters. When moving an inverse character set the 8th 
bit should be set to 127 or 255 depending on the 8th (bottom) 
print position condition. 

Now before sending the font bytes to the DMP you have to get 
It's attention, otherwise you get lots of garbage on the paper and 
lots of paper on the floor as well. The Attention code listed in the 
DMP reference card is <ESC> I. This is sent by printing an ASCII 
value for escape (27) followed bythecapitol I character (or ASCII 
36). The printer must first be opened like an interactive file, RESET 
(Pnnter,'. PRINTER'). For a better understanding on printer access 
from Pascal, review pages 163-164 in the Pascal Programmers 
Volume ^1. After the printer device is open you then Write the 
attention code to it (e.g. WRITE (Printer, CHR (27), T);). If you 
intend on using the alternate custom font dred, ASCII values 160- 
239, you must also precede the attention code with <ESC> - to 
inform the pnnter your characters will be no more than 8 bytes 
wide (e.g. WRITE (Pnnter, CHR (27), '-'),). If you send a custom 
character set which will be wider than 8 bytes, up to 16 bytes 
wide, you must precede it with<ESC> + (e.g. WRITE (Printer, CHR 
(27), '+');). 

After you have the printers attention you can begin sending the 
<list> as the reference card calls it. This list is the ASCII code 
definition byte, length byte and then 8 font cell definition bytes 
(See illustration below). This pattern is repeated until the entire 
character set has been transfered. To inform the printer that you 
have completed the task an ASCII code definition byte of ASCII 4 is 
sent. In the example program the character bytes dre transferred 
using the Unitwrite procedure to avoid character conversions 
done automatically in Pascal (See page 194 Pascal Programmers 
Manual ^1). 

Operation: 

If you dre an Apple ][ owner you need a friend with an Apple 
///. To use this program you will need an, Apple ///, Pascal, and 
perhaps Apple Writer ///. You could also try your friendly Apple 
Dealer. He may have already have read this. Ok Apple /// owners 
here we go. To begin, the Pascal program in this article must be 
typed into the Pascal editorand then compiled. No special library 
functionswere used. After the program has compiled successfully, 
execute the program. Your first choice is to [C]onvert a font file to 
proper code for the Apple DMP printer or [L]oad a previously 
converted file from disk. 



April/May 1983 



13 



ON THREE 



/// 



/// 



/// /// 



/// 



/// 



/// 



/// 



/// 



/// 



/// /// 



/// 



/// 



The conversion operation is simple. You will be asked for the 
complete path name of a font file (e.s. .D2/RO/V\AN). If you need 
further explanation of the path name see your Apple /// Owners 
Guide or Pascal Prosrammers Manual. The next question is whether 
you would like this set converted to [l]nverse or [N]ormal. Inverse 
prints a black space containing a white letter. By the way selectins 
Inverse for the Inverse character font is really stranse, because of 
the 8th byte (See technici notes above). After making your selec- 
tion the disk drive will whir into action and the display will show 
(in standard video characters) the font characters that are being 
converted. When this loading/converting process is done you will 
be asked to choose whether to send the font data directly to the 
[P]rinter orthe [D]iskfor later use. Sending the font to the disk will 
not load the font into the pnnter. You will use the [L]oad option to 
load the font from the disk to the printer. 

When saving the font to the disk you will be offered the oppor- 
tunity to create a text file for conversion to Apple ][ mode. Convert- 
ing the Apple ///text file to Apple] [text as well as moving it to an 
Apple ][ disk is easy, that is if you own a text transfer program like 
the utility diskwhich comes with Apple Writer ///.This utility disk 
when booted will offer you several choices for file conversion #2 
of which is Apple /// files to Apple ][ files. This program works 
best with multiple disk drives. It's best to use drive 1 for your 
Apple ] [ Dos 3.3 formatted disk. To convert the font textfi le created 
with the pascal program select ^2. Then answer the Apple /// 
volume question with the proper drive ^ (and subdirectory path, 
if any). The program will then ask for filenames. When answenng 
these two questions remember the file naming rules for each type 
of file. When in doubt use the Apple /// filename for both. Then 
you will be instructed to place the proper diskettes into their 
proper disk drives (e.g. Apple ][ diskette in Drive ^1 and Apple 
/// formatted disk in drive ^2). Once moved to an Apple ][ disk 
the process of loading the font from the disk to the printer is a 
simple one. Just enter and run the Applesoft program in this article. 

Once the new custom font is loaded into the printer it can be 
tested with either program. The program will print for you the 
complete character set followed by a message you can enter. 
Great uh? Well almost . . . there is one drawback. Only one com- 
plete custom character set can be held by the printer at one time. 
The custom font will remain intact until the printer is turned off or a 
new custom font downloaded. Run the program listed then try 
Apple Writer. To turn on the new custom font print<ESC> '. To turn 
itoff print<ESC>$. Ifyou are using Apple Writer you will need to 
use <CTRL> V to imbed the <ESC> character in your text. 

Now Byte, Apple, Roman, Gothic, Slant, Stop and Inverse char- 
acter fonts can be pri nted on the Apple Dot Matrix Pri nter. Now it's 
time to byte into the long awaited SOS manuals! Documentation at 
last! 'Happy Bit Byteing' /// 

Apple ][ Special Notes 

Note *1 : Ifyou are using a Prowriter instead of an Apple DMP and 
your printer will not accept the custom font, you will need the 
addition of a 2K x 8 Bit Static Ram (TMM 201 6). Early versions of the 
Prowriter were shipped without this chip, and supporting docu- 
mentation for the custom font feature. This chip, about the size of a 
common ROM, is placed in the only empty socket on the main 
board inside your Prowriter. I suggest that you have your computer 
dealer handle this process, unless you're very good insmall places. 



Apple ][ and Apple ///. Many printer cards installed in Apple ][s 
did not support 8 bit data transfer. 

[ILLUSTRATION] 

Printer "<list>" Data Format: 

Prior to loading Select Font Mode (hAdx Size). 
Send one of the following Codes to the printer: 

[ESC] - Selects 1 to 8 bit character width. 
Total of 175 possible characters. 

(dec) ASCII 32-126 
ASCII 160-239 

[ESC] + Selects 1 to 16 bit character width 
Total of 95 possible characters. 

(dec) ASCII 32-126 

Character Definition <List> Format: 

Precede with [ESC] I 

Loop Until Finished Transferring All Characters 

> 

1 Byte = ASCII Code 

1 Byte = Length Code 

n Bytes = Char Data (n = Width of Character) 
<- 



Length Code = Width of Character (1..16) + 
32 if Descender Exists. 

If Decender Exists pnnter uses Lower 8 wires instead of upper 8. 

After The Last Character Has Been Sent Print ASCII 4 (Chr (4)) To 
Indicate Completion of Transfer. 

CharDownLoad: Program Listin g 

PR08RAN Font.Movtrj 

ffttif4ff«ttf«f«f«f««ftff«««««tf#«f«#f«fff««f4ffff««#«««ff«4ff«««t««tftf«t«i 
f „ — 



Copyright 1983 by 
ON THREE 
April-Hay, 1983 



t CharDoHnLoid 

* 

* by Tiiothy S. Stith 
f 
f 
t Thii pro9rii Mill download thi Appli ///'i icrttn font to an Applt 

* Dot Hatrix Printer or Prowrittr. Filw lay be saved and then later 

* retrieved for doimloading. 
f 

* Read the article for coiplete inforiation on hoM to uie the prograi. 

ftfftf«f«44ff««f«f«#ff«iff«fft4fff«fff««f«4«ff«ffff««#f««f#«ff«f«f4«4tf4f«o 

VAR CH: packed ARRAY CO.. 127, 0..7, 0..7] OF 0..1; 
CR, Coluen, Ron, 
Count, Tetp : INTE6ER; 
Response : CHAR{ 
Printer : INTERACTIVE; 



Note *2: The Applesoft prosram in this article is desisned to 
work with the latest edition of Apple Parallel Interface Cards for the 



PROCEDURE Send} 
VAR Bits: CHAR{ 



{ Send Font bytes to printer froe latrix } 



14 



BE6IN 
{IIOCHECK-) 
RESET (Printer, 

April/May 1983 



.PRINTER')! 



ON THREE 



/// 



/// 



/// 



/// 



/// 



/// 



/// 



/// /// 



/// /// /// /// 



/// 



MITE ICHR 128)); 
IF lORESULT <> THEN 
BEGIN 
eOTOXY (24. 10); 

ilRITELN ('Printer Not Available'); 
EXIT (Prograt) 
End; 
SOTOXY (25. 10); 

NRITELN (' Downloading Font to Printer'); 
«RITE (Printer, CHR (27), '-', CHR (27), T); 
FOR CR := 32 TO 126 DO 
BEGIN 
eOTOXY (40, 12); 
KRITE (CHR (CR)); 

KRITE (Printer, CHR (CR), CHR (8)); 
FOR Coluin :« 6 TO 7 DO 
BEGIN 
Count :> 1; Teip '.* 0; 
FOR Row :«0 TO 7 DO 
BE6IN 
Teip :» Teip + (CH [CR, Row, Colum] » Count); 
Count :» Count » 2 
END; 
Bits :> CHR (Teip); 
UNITWRITE (6, Bits, 1, 0, 12) 
END; 
END; 
WRITE (Printer, CHR (4)); 
CLOSE (Printer) 
{I10CHECK+} 
END; { of PROCEDURE Send } 

PROCEDURE Save; ( Save Font bytei to disk fiU (In Printtr Foriit) ) 
VAR FileNaie: STRING; 

FontFili: PACKED FILE OF 0..255; 

Two :TEXT; 

Teip, Count: INTEGER; 

Bits :char; 

Appieii :boolean; 

BEGIN 
WRITE (CHR (28)); 
60T0XY (0, 10); 

WRITE ('Enter File Pathnate For Saving :'); 
READLN (FileNiiff); 
GOTOXY (0. 10); 

WRITE (CHR (30), 'Savt in Apple ][ Text Forut (Y/N) ? '); 
REPEAT 

READ (KEYBOARD, Bits); 
UNTIL (Bits = 'yM OR (Bits = 'Y') OR (Bits = 'n') or (Bits « 'N'); 
IF (Bits « 'y') OR (Bits « 'Y') 

THEN Appletl :« True 
ELSE 

Applell :> False; 
WRITE (CHR (28)); 
dlOCHECK-} 
IF Applell THEN 
BEdIN 
REWRITE (Two. FileNaie); 
IF lORESULT O THEN 
BEGIN 
GOTOXY (24, 10); 

WRITELN ('Unable To Open File'); 
EXIT (Prograi) 
END; 
END 
ELSE 
BEGIN 
REWRITE (FontFile, FileNaie); 
IF lORESULT <> THEN 
BEGIN 
SOTOXY (24, 10); 

WRITELN ('Unable To Open File'); 
EXIT (Prograi) 
END 
END; 
WRITE (CHR (28)); 
GOTOXY (35. 10); 
WRITELN ('Saving Font'); 
IF Applell THEN 
BEGIN 
GOTOXY (28, 11); 

WRITELN ('in Apple // Text Foriit') 
END; 
FOR CR :» 32 TO 127 DO 
BEGIN 
GOTOXY (40, 12); 
WRITE (CHR (CR)); 
FOR Coluin :> TO 7 DO 
BEGIN 
Count :« l; 

Teip :> 0; 

FOR Row :» TO 7 DO 
BEGIN 
Teip :» Teip + (CH [CR, Row, Coluin] ♦ Count); 
Count := Count ♦ 2 
END; 

{ If Saving for Transfer to Apple ][ Save in Text } 
( Not Byte Foriat } 

IF Aoplell THEN 
BEGIN 
STR (Teip, FileNaie); 



WRITELN (Tmo, FileNaie) 
END 
ELSE 
BEGIN 
FontFile'^ :» Teip; 
PUT (FontFile) 
END 
END 
END; 

CLOSE (Two, Unprotect); 
CLOSE (FontFile, Unprotect); 
{IIOCHECK+} 

WRITE (CHR (28)) 
END; { of PROCEDURE Save ) 

PROCEDURE Load; ( Load Previously Converted Font file ) 
{ froi disk and send it to the printer. } 

Var FileNaie :STRIN6; 

FontFile :PACKED FILE OF 0..255I 
CH :char; 
Count, Teip : INTEGER; 

BEGIN 
WRITE (CHR (28)); 
GOTOXY (0, 10); 

WRITE ('Enter Printer Character File Path :'); 
READLN (FileNaie); 
WRITE (CHR (28)); 
GOTOXY (30, 10); 

{ Open File And Printer Device ) 

(IIOCHECK-) 
RESET (FontFile, FileNaie); 
IF lORESULT <> THEN 
BEGIN 
WRITELN ('File Not Found'); 
EXIT (Prograi) 
END; 
RESET (Printer, '.PRINTER'); 
IF lORESULT <> THEN 
BEGIN 
WRITELM ('Printer Not Available'); 
EXIT (Prograi) 
END; 

< Hove Font Froi Disk } 

GOTOXY (29, 10); 

WRITELN CHoving Character Font'); 
WRITE (Printer, CHR (27), '-', CHR (27), 'I'); 
FOR CR :»32 TO 127 DO 
BEGIN 
GOTOXY (40, 12); 
WRITE (CHR (CR)); 

WRITE (Printer. CHR (CR), CHR (8)); 
FOR Count: «0 TO 7 DO 
BEGIN 
CH:«CHR (FontFile^); 
UNITWRITE (6, CH, 1, 0, 12); 
GET (FontFile) 
END 
END; 
WRITE (Printer, CHR (4)); 
CLOSE (Printer); 
CLOSE (FontFile) 
(tlOCheck^) 
END; { of PROCEDURE Load } 

PROCEDURE Test; { Teit Cuitoi Character Font } 

VAR Count: INTEGER; 
Hessage: STRING; 

BEGIN 
WRITE (CHR (28)); 
GOTOXY (0, 10); 

WRITE ('Enter Test Neiiage Line :'); 
READLN (Hessage); 
WRITE (CHR (2S)); 
GOTOXY (36. 10); 
WRITELN CTeiting'); 
RESET (Printer, '.Printer'); 
IF lORESULT <> THEN 
BEGIN 
WRITE (CHR (28)); 
GOTOXY (20. 10); 

WRITELN ('Printer Not Available'); 
EXIT (Prograi) 
END; 
WRITELN (Printer, CHR (27), CHR (39)); 
FOR Count :»32 TO 126 DO 
BEGIN 
WRITE (Printer, CHR (Count)); 
IF Count = 79 THEN 
WRITELN (Printer) 
END; 
WRITELN (Printer); 



WRITELN (Printer, Hessage); 
WRITELN (Print! "•" "' 
CLOSE (Printer] 



age); 
(27), 



CHR (36)); 



April/May 1983 



end; { of PROCEDURE Test } 

Program listing continued on next page. 

15 



ON THREE 



/// 



/// 



/// 



/// 



/// 



/// 



/// 



/// 



/// /// 



/// 



/// 



/// 



/// 



PROCEDUI^E Read Font; { Read Apple /// Fontfile Froi Disk And } 
{ Convert TO Bit Hatrix Table CH. } 
VAR FofltFile: FILE! 

{ Untyped File FOR Blockread Function } 
FiliPath: STRING) 

{ SOS Fill Pfth - Catalog Path V File Nate } 
Inverse: BOOLEAN; 

{ Flag TO Set Character Font TO Inverse Node } 
Buf: PACKED ARRAY CO.. 40953 OF 0..1; 

( Input BuHer As Array of Bits ) 
BE6IN 
WRITE (CHR 128)); 
BOTOXY (0, 10); 

WRITE ('Enter Font File Pathnaet :'); 
READLN (FilePath); 
SOTOXY 10,10); 

KRITE (CHR (30), 'Enter As [Ilnverse or [NJorial ?'); 
REPEAT 

READ (KEYBOARD, Response); 
UNTIL (Response = T) OR (Response «'i') OR 

(Response « 'n') OR (Response ■ 'N'); 
IF (Response » T) OR (Response « 'i') THEN 

Inverse :< True 
ELSE 

Inverse :> False; 
WRITE (CHR (28)); 
BOTOXY (32. 10); 
WRITELN ('Opening Font File'); 

{ Open Fontfile On Disk } 

dlOCHECK-} 
RESET (FontFile, FilePath); 
IF lORESULT <> THEN 
BE6IN 
BOTOXY (28, 10); 

MRITELN (CHR (30), 'Unable TO Open Font File'); 
EXIT (Prograe) 
END; 
{IIOCHECK+} 

{ Read and Load File TO Nitrix } 

WRITE (CHR (28)); 
BOTOXY (29, 10); 

WRITELN ('Converting Font Table'); 
Teep :> BLOCKREAD (FontFile, Buf, 1); 
FOR CR:=0 to A3 DO 
BE6IN 
SOTOXY (40, 12); 
IF CR > 31 THEN 

WRITE (CHR (CR)) 
ELSE 
IF (CR HOD 2) « THEN 

WRITE ('»') 
ELSE 
WRITE (' '); 
FOR Ron :» TO 7 DO 
FOR Coluin:«0 TO 7 DO 
Ch [CR, Rom, ColuinJ :* M ECR t M ^ Ron f 8 4- CoIum] 
END; 
Teep :> BLOCKREAD (FontFile, Buf, 1); 
FOR CR:«64 TO 127 DO 
BE6IN 
BOTOXY (40, 12); 
WRITE (CHR (CR)); 
FOR Rom:>0 TO 7 DO 
FOR Coluin:»0 TO 7 DO 
Ch [CR, Ron, Colum] :• Buf [(CR - 64) t 64 ^ Ron t 8 ^ Coluin] 
END; 
CLOSE (FontFile); 

{ IF Inverse THEN Reverse Natrix ) 

IF Inverse THEN 
BE6IN 
WRITE (CHR (28)); 
BOTOXY (31, 10); 

WRITELN ('Changing TO Inverse'); 
FOR CR:=32 TO 127 DO 
BE6IN 
BOTOXY (40, 12); 
IF (CR Nod 2 • 0) AND (CR < 32) THEN 

WRITE ('#') 
ELSE 

WRITE (' '); 
IF CR > 31 THEN 

WRITE (CHR (CR)); 
FOR Ron:«0 to 7 DO 
FOR Coluin:»0 TO 7 DO 
IF CH [CR, Ron, Colum] «1 THEN 

CH [CR, Ron, Colutn] :* 
ELSE 
CH [CR, Ron, Coluin]:»l 
END 
END 
END; { of PROCEDURE Read.Font } 

BE6IN ( Nain Prograi } 
WRITE (CHR (28)); 
BOTOXY (15. 0); 

WRITELN ('Character Font Transfer » ♦ * By Tiiothy S. Siith'); 
BOTOXY (0, 2); 
HRITE (CHR (2)); 

16 



BOTOXY (27, 23); 

WRITE ('COPYRIGHT 1983 by ON THREE'); 

GOTOXY (0. 10); 

WRITE ('[£]onvert Screen Font OR [LDoad Printer Font Froi Disk ?'); 

REPEAT 

READ (KEYBOARD, Response); 
UNTIL (Response «= 'c') OR (Response « 'O OR 
(Response * '1') OR (Response « '[') OR 
(Response = CHR (27)); 
IF Response « CHR (27) THEN 

EXIT (Prograe); 
IF (Response « '1') OR (Response « 'L') THEN 

Load 
ELSE 
BEGIN 
Read Font; 
WRITE (CHR (28)); 
GOTOXY (0, 10); 

WRITELN ('Type [Escape] to quit'); 
WRITELN; 

WRITE ('Send Font TO [P]rinter OR [DJisk ?'); 
READ (KEYBOARD, Response); 
IF Response « CHR (27) THEN 

EXIT (Prograi); 
IF (Response « 'd') OR (Response » 'D') THEN 
BEGIN 
Save; 

EXIT (Prograi) 
END 
ELSE 
Send 
END; 
WRITE (CHR (28)); 
GOTOXY (0, 10); 
WRITE ('Test Font (Y/N) ?'); 
REPEAT 

READ (KEYBOARD, Response); 
UNTIL (Response « 'y') OR (Response « 'Y') OR 

(Response = 'n') OR (Response = 'N'); 
IF (Response*' Y') OR (Response«'y') THEN 

Test; 
WRITE (CHR (28)) 
END. { Of PR06RAH Font.Hover } 

Apple ][ CharDownLoad 



10 

20 

30 

40 

50 

60 

70 

80 

90 

100 

110 

120 

130 

140 

150 

160 

170 

180 

190 

200 

210 

220 

230 

300 

310 

320 

330 

340 

350 

360 

370 

380 

400 

410 

420 

430 

440 

450 

500 

510 

520 

530 

540 

550 

560 

570 

580 

590 

600 

610 

620 

630 

640 

650 

660 

670 

680 



APPLE DHP CUSTOM 
CHARACTER FONT LOADER 

BY TIHOTHY S. SHITH 

COPYRIGHT 1983 BY 
ON THREE 
APRIL-HAY, 1983 

l: REH ««■ PRINTER SLOT t 



REN 
REN 
REH 
REN 
REH 
REN 
REN 
REH 
REH 
SL « 

REN 

TEXT'.HOHE :D$ « CHR$ (4): PRINT DrHONON' 

HTAB 12: PRINT •CUSTOH FONT LOADER' 

VTAB 22: HTAB 12: PRINT 'BY TIHOTHY SHITH* 

HTAB 7: PRINT 'COPYRIGHT 1983 BY ON THREE': VTAB 11: PRINT 

DIN A(768) 

INPUT 'ENTER FONT FILENAME: ';F$ 

IF F$ « •' OR Fl ■ '?■ THEN HONE: PRINT DI'CATALOS": PRINT: GOTO 170 

HO^ 

REH 

REH 

REH' 

REH 

PRINT DI'OPEN "F$ 

PRINT D$'READ 'F$ 

FOR C - TO 767 

INPUT A(C) 

VTAB 12: PRINT "READING ■> "; 
T ' INT ((C / 8) + 32): IF T > 96 THEN T « T - 64: INVERSE 

PRINT CHRI (T): NORMAL 

NEXT C 

PRINT DfCLOSE 'Fl 

REH 

REM ft SEND FONT TO PRINTER tf 

REH 

HOME: VTAB 12: HTAB 17: FLASH: PRINT 'WORKING";: NORMAL 
P » (49280 + (SL * 16)): REH <= DATA OUTPUT 

(SL t 256): REN <» DATA READY STROBE 



»♦ READ FILE OF INTEGER « 
t# BYTE VALUES FOR FONT t# 



DR « 49345 
REM 



REM PRECEDE FONT WITH 
REH PRINTER MODE AND 
REM ATTENTION CODES... 
REM 

POKE P,24: POKE DR,l 
POKE P,27: POKE DR,1 
POKE P,45: POKE DR,1 
POKE P,27: POKE DR,1 
POKE P,73: POKE DR,1 
REM 

SEND FONT DESCRIPTION 

BYTES PRECEDED BY 

1 BYTE ' ASCII VALUE 

1 BYTE = LENGTH OF DESCRIPTION 

N BYTES » FONT DESCRIPTION 



April/May 1983 



REM 
REM 
REM 
REM 
REM 
REM 
REM 
REH 



POKE BYTES TO PRINTER 

CARD TO AVOID CONFLICT WITH 

Program listing continued on page 23 



ON THREE 



/// /// 



/// 



/// 



/// 



/// 



/// 



/// /// /// /// /// /// 



/// 



nssemblinQ (ON) the /// 



by Martin Nichols 



Just as promised, this month I will show you how to do some 
more fascinating things with your ///. Since they d^e just a 
random collection of things I have been working on I have called 
these assembly language routines 'Misc.'. 

With this module you will be able to lock and unlock the reset 
key so that a user program can prevent the computer from being 
rebooted just like Visicalc and Apple Writer///. You will also be 
able to reboot the system without having to press CONTROL- 
RESET. 

The last two procedures in this module allow you to selectively 
choose the speed of the microprocessor that the Apple /// uses. 
You can choose either Slow or Fast and the computer will then 
operate at either 1 or 2 MhZ. You can use this to 'Slow-Up' those 
fast listings and cataloges. Like I said last time, this one is for those 
of you who feel that life is going by too fast. 

Many of you can probably see the use of locking and unlocking 
the RESET key, and possibly even changing the speed to slow 
things down. But why the heck do we need this reboot thing'r* Well, 
I wrote this one because a few buffered printer interface cards 
loose their buffer when you press CONTROL-RESET. 

Say you are printing out aver/ long listing of a Basic program to 
your buffered printer. The computer sends the listing to the buffer 
and the buffer sends it to the printer as fast as the printer can 
accept it. The listing to the buffer takes only a few seconds and 
now you want to write a letter so you insertaword processing disk 
and press CONTROL-RESET. Bam!! The listing that was in the buffer 
seems to have been erased and you get half a pnnt-out or less. 

With this module you can do a reboot without destroying 
information in your print buffer. Program listings *1 and *2 show 
how easy it is to do this from both Basic and Pascal. The assembly 
language procedures are listed in program listing *3. The docu- 
mentation and test programs combined into one and dre listed in 
program listing *4. 

To use these routines in your programs, use the Pascal editor to 
enter the assembly language routi nes in listing *3. Assemble it and 
name if 'MISC. The file that the assembler creates will contain the 
useable assembly language procedures, and its name will be 
'MISC. CODE'. To show that this can be used as an invokable 
module, use the filer to change its name to 'MISC.INV. 

Program listing *1 is a Pascal Program to show you how easy it is 
to reboot. Listing *2 is the Basic implementation. You can use 
these routines just as they are described in the Basic Documenta- 
tion and Test program. If you want to use them in Pascal, declare 
each of the routines external procedures and use the Linker to link 
them into your Pascal host program. 

That's all for now, next time I will answer many readers questions 
by showing how to format a diskette outside ofthe System Utilities 
Disk. Basic and Pascal implementations will be given. Now ANY 
program can give the user the option of formatti ng a diskette! /// 

Assembling (ON) the ///: 

Program Listing #1 

PR06RAH Boot; 



{ * Ri-Boot (Paical vfrtion) 

( t 

{ t by Hartin Nicholi 

{ ♦ 

{ * 

( ♦ 

{ ♦ 

( ♦ 

{ ♦ 



Copyright 1983 by 
ON THREE 



This prograi dtionstrattf hon to uie thi 'HISC asitibly 
language routine ReBoot froi within your Pascal prograii. 

A^ter coapiling this prograi, use the L) inker to link 
the aiieibly language routine to this Pascal prograi. 



COMST Return ■ 13; 
Escape > 27; 

Cltir.vieeport ■ 28| 

VAR Response: CHAR; 

Esc.Ret : SET OF CHAR; 

PROCEDURE ReBoot; { t Here is the routine that allows you to t ) 
EXTERNAL; { t reboot without pressing CONTROL-RESET. # } 

BE6IN { Nain oi Boot } 

Response :■ ' '; 

Esc Ret :« [CHR (Escape), CHR (Return)]; 

HRITE (CHR (Clear viewport)); 

BOTOXY (12, 12); ■ 

KRITE CPrns 'RETURN" to re-boot the systee, '); 

mil ("ESCAPE- to eiit'); 

REPEAT 
UNITREAO (2,RNponse,l,.12) 

UNTIL (Response IN Esc Ret); 

IF (Response « CHR (Return)) THEN 
Reboot 
END. { 0^ PR06RAH Boot ) 

Assembling (ON) the ///: 
Program Listing #2 



{ t Read one character t } 
{ * froi the keyboard. * } 



REN ♦ Re-Boot (Basic version) 

I Copyright 1983 by I 

by Hartin Nichols ION THREE! 



REH t 
REH t 
REH * 
REH t 
REHf 



This prograi deionstrates how to use the 'HISC' invokable 
Mdule froi Basic. Any tiie vou want to re-boot your 

REH t systei without prMsing CONTROL-RESET, you can! 

REN * 

teit:hohe:vpos«12 

ON ERR PRINT'Can't find the invol(able!!!':END 

INVOKE'Hisc.INVlOFF ERR 

Esc.Rett>CHRI(27)^HRI(13) 

PRINT U8IN8*80c'; 'Press 'RETURN' to re-boot, 'ESCAPE' to exif 

SET Responsel 

IF NOT INSTR(Esc.Retl,Responsel) SOTO 60 

IF RespoRsef-C)«}l(13} THEN PERFORH ReBoot 

HONE 



Assembling (ON) the ///: 
Program Listing #3 



fHf»ffff»wfff»»*» un ttiiit » iitttt*f*»»t»»»t m iii n »ii m i m 
f 

t Nisc. Utilities: SpeedBoot(Un)Lock? 



by Hartin Nichols 



! Copyright 1983 by I 
I OH THREE I 
I April-Hay, 1985 I 



These asseibly lanuage routines will enable your Basic or 
Pascal prograis to re-boot the systei without pressing 
Control -Reset, Lock and Unlock the Reset key to protKt 
froi accidental reboots, and slow down and speed up the 
speed of the coiputer. 

To use in your Basic prooran, asseible thete routinn using 
the Pascal asseiblcr, and then invoke it as you would any 
other invokable lodule. 

For use in Pascal prograii, declare each of these routines 
EXTERNAL PROCEDURES and then use the linker to link thei to 
your Pascal host prograi. 



fMfffffff*ftfttwff*fff*ffWftM»a«**t**»*t*»*tfftMt«ta«ifff*ef 



.HACRO Set 

LDA 111 

ORA Z2 

STA 12 
.ENON 

.HACRO Reset 

LDA tXl^ask 

AND Z2 

STA 12 
.ENDH 

.HACRO SOS 
BRK 

•BYTE XI 

.NORO Z2 
.ENDH 



Close .EBU OCC 

Hask .EQU OFF 

Envrit .EBU OFFDF 

Boot .EQU aF4EE 



; This sets specific bits within 

; a byte to 1. 

; Use like this -> Set IBO.High 

; This will set the high bit (17) 

; of the byte High to I. 

; This sets specific bits within 

; a byte to 0. 

; Use like this -> Reset iSO.Low 

; This will set the high bit (17) 

; of the byte Low to 0. 

; Hacro def for SOS call blxk 

; Beoin SOS call block 

; call nui 

; paraieter list pointer 

; end of lacro definition 



; call nui for CLOSE 

; Used'to EOR a byte in Reset above 

; Environicnt register location 

; Honitor entry point for booting 



- Procedure ReBoot 



; This prxedure causes the systei to reboot. Before rebooting, 
; it first closes all open files whose file level is greater than or 



{ mt#»##t*##t###ffff#t««ff#«f#mt#mm*«»*«mt#f#*t« } April /May 1983 Pi^ogrom listing continued on next poge. 



17 



ON THREE 



/// 



/// /// 



/// 



/// 



/// 



/// 



/// 



/// /// 



/// 



/// 



/// 



/// 



; equal to the current systei level. Hake sure you have finished 

j writing to any open file before using this call, as it doesn't 

} return. 
! 

.PROC Reboot, 

JHP Start 



C List 
C"Ref 



Start 



.BYTE 
.BYTE 



SOS 
LOA 
STA 
JHP 



01 ; one parameter for CLOSE 

00 ; close all files that are 

; >■ the current file level 

Close, C_List ; Close all open files. 

173 ~ ; Do this to take sure Ne are not 

Envrit I ooino to juip off into oblivion. 

Boot ; No RTS because Me Mon't be 

i coiing back to the systei. 

- Procedure ResetLock - 



I 

I 

; This procedure locks out the Reset key so you can't reboot by 
I pressing CONTROL-RESET. You can use this to idiot-proof your 
pro^rais froi accidental rebooting. 



I 



.PROC Reset. Lock, 

Reset 110, Envrit 
RTS 



- Procedure ResetlinLock - 



; This procedure unlocks the Reset key so you can reboot by 
; pressing CONTROL-RESET. Use this just before exiting your 
; prograii that use the procedure ResetLock above. 



.PROC Reset .Unlock, 
llO,Envrit 



Set 
RTS 



Procedure Slow - 



; This procedure cuts the speed of the Apple ///'s 6502 CPU froi 

j a laxifui of 2HhZ to INhZ. This change lasts until the next 

; tiie you reboot, or until you use the Fast procedure below. 

; Uieful for slowing down things that arc going to fait for you 

' such as prograi listings and other quick operations. 



.PROC Slow,0 



Set 
RTS 



too, Envrit 



- Procedure Fast - 



; 



J 
; 

; This procedure sets the speed of the Apple ///'s 6502 CPU to 

i be 2Nn2 regardless of what it was. Use this to speed back up 

I the coiputer after using the Slow procedure above. 
! 

.PROC Fast,0 

Reset 180, Envrit 
RTS 

.END {Of aiiMbly 

Assembling (ON) the ///: 
Program Listing #4 



10 

20 

30 

40 

50 

60 

70 

80 

90 

100 

110 

120 

130 

140 

150 

160 

170 

180 

185 

190 

200 

210 

220 

230 

240 

250 

18 



REH 
REN 
REN 
REH 
REN 
REN 
REH 
REN 
REN 



* Nisc. Utilities: Docuientation and 
Test Prograi 
by Nartin Nichols 



Copyright 1983 by 
ON THREE 
April-Hay, 1983 



This prograi deionstrates how to use the 'NISC' invokable 
■odule froi Business Basic. 



REN f You can now have the coiputer Re-Boot, Lock and Unlock the 
REH » RESET key, and slow down and spetd up the licroproceisor 
REH f froi Basic using siiple coMands. 



REH 
REH 
REH 
REH 
REH 



To use in your Basic prograis, invoke it into leiory with 
the statement 'INVOKE •NISCINV and then use the routines 
as they are outlined below. 



INVOKE*Nisc.INV':REN Load the Invokable Nodule 

Screen. 0ff««CHRI(14):TEU 

Titlel'Scrcen.0ff<^*HI5C INVOKABLE HODULE Docuientation k Test' 

eOSUB 510:VP0S=4 

PRINT'Before and Invokable Nodule can be used, it lust be loaded'; 

PRINT' into the systei by the following Coiiand Foriaf.' 

PRINTIPRINT') INVOKE HISC.INV':PRlNT:PRINT'where HISC.INV can be the"; 

PRINT* naie of this or any other Invokable Hodule.".PRINT:60SUB 500 



290 

300 

310 

320 

330 

340 

350 

360 

370 

380 

390 

400 

410 

420 

500 

510 

1000 

1010 

1020 

1030 

1040 

1050 

1060 

1070 

1080 

1090 

1099 

2000 

2010 

2020 

2030 

2040 

2050 

2060 

2070 

2080 

2090 

2100 

2110 

2120 

2130 

2140 

3000 

3010 

3020 

3030 

3040 

3050 

3060 

3070 

3080 

3090 

3100 

3110 

3120 

4000 

4010 

4020 

4030 

4040 

4050 

4060 

4070 

4080 

4090 

4100 

4110 

4120 

5000 

5010 

5020 

5030 

5040 

5050 

5060 

5070 

5080 

5090 

5100 

5110 



Title$«Screen.Off$+'HISC INVOKABLE HODULE Docuientation k Test' 

60SUB 510:VP0S«4 

PRINT:PRINT TAB(8);'Select one of the following options: ':PRINT 



PRINT TAB(10);'l. 
PRINT TAB(10);'2. 
PRINT TAB(10);'3. 
PRINT TAB(10);'4. 
PRINT TAB(10);'5. 



Rebooting the systei' 
Locking the RESET key* 
Unlockino the RESET key' 
Slowing down the coiputer' 



Speeding up the coiputer* 
PRINT TABn0);"6. End':PRINT 



;: INPUT a*:x«C0NV(LEFT$(al,2)) 



5 or 6':VP0S« VP0S-2:60T0 380 



PRINT TAB(8)) 'Which option 

IF x<0 THEN x-0 

ON X SOTO 1000.2000,3000,4000,5000,420 

PRINT TABIB); 'Please enter 1, 2, 3, 4, 

HOHE:PRINT'Bye!':PRINT:END 

VP0S«24:PRINT USIN6'76c'; 'Press any key to Continue'; :6ET a$:RETURN 

H0HE:PRINT USIN6'79c';Titlel:PRINT:RETllRN 

REH — Reboot the systei — 

Title$«Screen.Offl+'- Reboot -":SOSUB 510 

VP0S«4:PRINT"This procedure causes the systei to reboot. Before '; 

PRINT'rebootino, it first cIoms all open files. To use, insert'; 

PRINT* a boot disk (Pascal, Apple Nriter ///, etc.) into the '; 

PRINT*internal disk drive and issue the following stateient:*:PRINT 

PRINT')PERF0RH Reboot'lPRINT 

PRINT'and the systei will reboot.': PRINT 

PRINT'To actually use, exit this prograi and enter the above '; 

PRINT'stateient to reboot.' 

60SUB 500:60T0 290 

REH — Lock the RESET key — 

Title$»ScreBn.Off$+'- Locking the RESET key -':60SUB 510 

VP0S«4:PRINT'This procedure locks out the RESET key so you can't '; 

PRINT'reboot by pressing CONTROL-RESET. You can add this'; 

PRINT' to your prograis as a lethod of protection against'; 

PRINT' accidental rebooting. ':PRINT 

PRINT'To use. enter the following stateifnt:':PRINT 

PRINT') PERFORM ResetLock':PRINT 

PERFORH ResetLock 

PRINT'Ne have just locked out the RESET key. To test it out, '; 

PRINT'try to reboot the systei by pressing CONTROL-RESET." 

PRINT:PRINT'»hen you are convinced that you can't reboot...' 

eosuB 500:vpos«i6:print 

PRlNT'See, I told you so...' 

SOSUB 500:60T0 290 

REH — UnLock the RESET key — 

Titlel-Screen.Offl+'- UnLocking the RESET key -':60SUB 510 

VP0SM:PRINT*Thi5 procedure unlocks the RESET key so you can '; 

PRINT'reboot by pressing CONTRQL-RESETYou can add this to'; 

PRINT' your prograis as a leans of reversing the protection'; 

PRINT' given by the ResetLock stateient.*: PRINT 

PRINT'To use. enter the following stateient: ■:PRINT 

PRINT')PERFOftH ResetUnLock':PRINT 

PERFORH ResetUnLock 

PRINT'He have just unlocked the RESET key. Take ly word for it, '; 

PRINT'if you try to test itby pressing CONTROl-RESET you will '; 

PRINT'reboot the systei.' 

60SUB 500: SOTO 290 

REH — Slow up the /// — 

Title$«Screen.Offl+'- Slowing down the Apple /// -':SOSUB 510 

VPOSM:PRINT'This procedure cuts the speed of the Apple ///'s '; 

PRINT'6502 CPU froi a laxiiui of 2Hh2to IHhZ. This change lasts'; 

PRINT* until the next tiie you reboot, or until you use theFait '; 

PRINT'procedure included in this invokable iodule.':PRINT 

PRINT'To use. enter the following stateient:': PRINT 

PRINT')PERFORH Slow':PRIHT 

PERFORH Slow 

PRINT'Ke have just slowed down the licroprocessor. Everything '; 

PRINT'should appear slower now. All operations will take about'; 

PRINT* 501 lore tiie to coiplete.* 

SOSUB 500: SOTO 290 

REH — Speed up the /// — 

Title$«Screen.Off$+'- Speeding up the Apple /// ~':60SUB 510 

VP0S=4:PRINT*This procedure sets the speed of the Apple ///'s '; 

PRINT'6502 CPU to a laxiiui of 2HhZ froi IHhZ. This change lasts'; 

PRINT* until the next tiie you reboot, or until you use the '; 

PRINT*Slow procedure included in this invokable iodule.*:PRINT 

PRINT'To use, enter the following stateient: •:PRINT 

PRINT*)PERFORH Fa8t':PRINT 

PERFORH Fast 

PRINT'Ne have just speeded up the licroprocessor. Everything '; 

PRINT'should appear faster now. All operation should be at*; 

PRINT' norial speed.' 

SOSUB 500: SOTO 290 



5120 

DOS File List 



Continued . 



BE6IN { HAIN of List DOS Directory } 
Set Out device; 
Lini count := 4; 
Mith'DosdirCO] DO 
BEGIN 
Dfkind := Volinfo; 
Dnuientries :* 0; 
Dunitnui :'0 
END; 
Catalog; 
(IIOCHECR- } 

CLOSE (Device, LOCK); 
{$IOCHECK+ } 

Trap 10 error 
END; {'OfPROCEDURE List.DOS.Directory } 
BEGIN 
{ This is the initialization, which occurs > 
( before the host prograi is executed. } 
END. { Of UNIT DOS List Stuff } 



April/May 1983 



ON THREE 



/// /// /// /// /// /// /// /// /// /// /// /// /// /// 



Products Received 



The products outlined below have been received by ON THREE 
for the purpose of review. Some have been reviewed in the 
past and many will be reviewed in the future. The products have 
all been siven the ON THREE 'stamp of approval'. This is only an 
indication that a product works as advertised and is not an 
endorsement of the product by ON THREE. 

PFS: FILE & REPORT 

With PFS: File you can create a file, search and update any item or 
group of items in the file, and pnnt sorted information. Information 
management at its best, these programs are extremely easy to use. 

All PFS products dre designed so that a novice can master them 
in less than an hour. Reviewed in the January issue of ON THREE, 
these programs received an A- and a B- respectively. 

Available from most authorized Apple dealers, these programs 
dre made by Software Publishing Corporation and dre priced at 
$1 75 and $1 25 respectively, for the Apple ///. 

Software Publishing Corporation, 1901 Landings Drive, Mountain 
View, California 94043. (415) 962-8910. 

QUICK & EASY DATA MASTER 

Quick & Easy Data Master is a program that creates custom 
applications software and report forms designed to your specifi- 
cations. This package creates an unprotected Business Basic data 
base program as per your specifications. 

The ideal data base program is one that you can design exactly 
the way you want it: prompts, edits, error messages, headers, titles, 
computed data, interactive files, report forms, etc. to your specifi- 
cations. You design it and Quick & Easy will create it for you. 

Intended for the more serious computer user who knows how 
to program in Basic, this package is not very hard to use, but it does 
require some thought. Sold by Advanced Software Technology, 
Inc., it is priced at $69.95. Reviewed In this issue, it gets a C. 

Advanced Software Technology, Inc., 7899Mastin Drive, Overland 
Park, Kansas 66204. (913) 648-4442. 

CRITICAL PATH SCHEDULING 

If you are involved in project management and tired of the 
hassels of project scheduling, the Critical Path Scheduling System 
is for you! It is a management tool for defining and analyzing the 
overall conceptsof a projectand providesa powerful method for 
scheduling the many tasks necessary to complete the project ON 
TIME AT THE LOWEST POSSIBLE COST. 

Armed with the information that this system provides, the man- 
ager is better prepared to make decisions regarding the impact any 
task will have on the project and permits him to be instrumental in 
guiding the project rather than just monitonng its progress. 

This is a very 'User Fnendly' system, and it has a good tutorial/ 
user manual. Comprehensive reports make a manager's life a lot 
easier. Developed by Great Divide Software, it has a suggested 
retail price of $495. Reviewed in this issue, CRITICAL PATH 
SCHEDULING gets a B. 



GL'PLUS 

To many managers, accounting and the preparation of financial 
reports are time consuming chores that have to be struggled 
through. But now, at last, accounting can be simplified. 

GL-PLUS is an accounting system designed for the Apple /// 
computer. It is a flexible, easy to use, journal-based General Ledger 
system. The computer and GL-PLUS combine to provide you with a 
tool. A tool to make your accounting chores easier. GL-PLUS auto- 
matically guides you through entries and then automatically sorts 
and posts them. 

Report preparation is a "snap"with GL-PLUS. Vou select the 
report you wish and the rest is done automatically. GL-PLUS 
includes a PLUS. The PLUS is a built-in accounts receivable and 
accounts payable capability that can be implemented anytime 
you desire. 

Another 'User Friendly' system, flexible reporting and ease of 
use make an excellent accounting package. Developed by Great 
Divide Software, it has a suggested retail price of $495. To be 
reviewed in the June-July issue. 

Great Divide Software, Inc., 8060 West Woodard Drive, Lakewood, 
Colorado 80227. (303) 337-0383. 

PKASO /// 

The PKASO /// printer interface system is a hardware and 
software device that allows the Apple /// to operate with just 
about any dot matrix printer in both native and emulation mode. It 
gives the user the option of printing text, graphics or even screen 
dumps on your parallel printer. 

A very nice printer interface, the system has a suggested retail 
price of $205. Reviewed in this issue, the PKASO /// printer 
interface gets an A. 

Interactive Structures, Inc., P.O. Box 404, Bala Cynwyd, Pennsylva- 
nia 92123. (215) 667-1713. 

MICROTEK Dumpling-GX & 
Dumpling Spooler & 
Alpine Printer Driver 

The MICROTEK pnnter interface cards used with the Alpine 
printer driver allow the Apple /// to connect with a vanety of 
parallel printers. In particular, the MICROTEK Dumpling Spooler 
interface allows you to dump vast quantities of data into the 
interface buffer for later printing. 

Combined with the Alpine Apple /// interface software, the 
MICROTEK interface cards allow the printing of text, graphics and 
screen dumps on your parallel printer. It even works in emulation 
mode. To be reviewed in the June-July issue. 

MICROTEK, Inc., 9514 Chesapeake Dnve, San Diego, California 
92123. (619) 569-0900. Alpine Computing, Inc., 851 North Mam, 
Logan, Utah 84321 . (801 ) 752-6432. 

Continued on page 9 



April/May 1983 



19 



ON THREE 



/// /// /// /// /// /// /// /// /// /// /// /// /// /// 



UJorcl ProcessinQ LonguoQe 



by Bob Consorti 



I I I PL IS a fantastic tool for Apple Writer/// users. Unfortunately, 
UU very little is known about WPL and what it can do. ON THREE 
will periodically publish WPL prosrams and more importantly, the 
instructions on how to use them. The information in this column 
will serve as an introduction and tutorial to the languase, so if you 
have written WPL programs we want to hear from you! 

What IS WPL and what can it do'j^ Well, as stated in the manual, 
WPL's purpose is to make automated word processing possible. 
Many of the things that you do with word processing such as 
typing in form letters, reports and other repetitive tasks can be 
done easier with WPL. 

Since one of the greatest purposes of computers is to save us 
time. It was inevitable that WPL came to be. Since it can and will 
save you time, it's unfortunate that so little information is available 
for It. 

It all sounds good, righf^Well, now we will discussjusthowWPL 
can makeyourworka littleeasier.Tofollowalong,you musthavean 
Apple Writer /// Master disk in the internal disk drive and the 
instruction manual (not the Product Training Pak!). 

Type [P] (Control-P), and then 'PD.CONSOLE'. Next type [P] 'DO 
.D1/AUTOLETTER'. We will be printing letters so to not waste 
paper, we will print it on the screen. That's the reason for the first 
line. The next line tells the computer to execute the WPL program 
named 'AUTOLETTER' on the disk in the internal disk drive. 

Your disk drive should come on a number of times and five 
letters will be printed. What is going on isthis: The WPL program is 
taking a form letter (from the file '.DI/FORMLETTER') and the names 
and addresses from the file '.D1/ADDRS' and combining the 
information to create form letters. Thus if you have a large number 
of letters with the same general information that needs to be sent 
out, WPL can extract the names, addresses and other pertinent 
information from the address file and automatically print out a 
number of personalized letters. 

How does It do \\1 That's a bit complicated but I think I can 
explain it. A WPL program is a standard Apple Writer /// text file 
that consists mainly of normal Apple Writer/// commands. A WPL 
program thus has all of Apple Writer ///'s search and replace, 
printing and formatting, loading and saving, insertion and deletion, 
etc. commands. For those of you with a little programming exper- 
tise, WPL also offers integer and string variables. Even some simple 
comparison statements and subroutines are available. 

As Its name implies, WPL is a true programming language. With it 
you can really automate many of those complicated and tiresome 
chores. The form letter example included on the Apple Writer/// 
program disk is but one of many things possible with WPL. For the 
next few paragraphs, I will discuss the basics of WPL and give you 
examples of simple WPL programs. 

This IS going to be an interactive tutorial, so you will have to do a 
little work. Start by opening your instruction manual to page 71 
and start reading. On page 72 you will find something that may 
clarify things a little. If you have ever used embedded text format- 
ting commands when printing out a text file, you have used WPL! 

In other words, if you used the '.CJ' command to center a line of 
text while printing (or any other formatting command) you were 
using WPL. Thus all of the '[P] Print/Program Commands:' options 
are caned out by WPL. On page 72 you will also see how to use 
WPL commands from within a WPL program. 

To automate a process using WPL, all you have to do is write 



down all of the keystrokes you use in that process and convert 
those keystrokes into a WPL program. Commands begin with some 
control character (CONTROL P to print, CONTROL F to find/ 
replace. . .), thus to initiate a command from within a WPL program 
we must somehow tell the computer that we want a command 
processed. 

Using WPL we just enter the CONTROL characters as normal 
letters and follow them with the other necessary keystrokes. So to 
set the left margin using WPL we enter the following statement: 
'PLM 10'. One of the quirks of WPL is that commands have to be 
preceded by one or more spaces. Thus press the TAB key once 
before entering the command 'PLM 10'. 

You should now have 14 characters in your file. Save it to a blank 
disk with the command '[S].D2/TEST.1'. Now that it is saved on a 
diskette you can execute it by typing in '[P]DO .D2/TEST.1 '.This is 
the "DO" command and it is the way to execute a WPL program. 

After pressing RETURN, the "DO" command will execute the 
specified WPL program from disk. In our example, the program 
changed the left margin of the print format to 10. To check this out, 
type '[P]':^' to get into the Print/Program Commands: options. The 
left margin option should now be 10. To make sure that it wasn't 1 
to start with, change it to say, 99 with the command 'LM 99'. Now 
press RETURN once to get out of this menu and execute the WPL 
program again with the line '[P]DO .D2/TEST.1 '. Finally, check the 
left margin value and it will be 10. Woila! The WPL program did it. 

Mindless, huh? Well, say you had one hundred letters to be 
printed, each with a different left margin. It would be a heck of a 
job to manually change the margin and print out each file. WPL 
offers a much easier way. 

Type in the following paragraph and save it under the pathname 
'.D2/LETTER'. 

This IS a short line of text to illustrate one of the many uses of WPL 
in letter and general document preparation. When the WPL pro- 
gram IS executed, each time you press RETURN this document will 
be printed with the left margin 5 spaces greater that the last time. 

Say that we want the above paragraph printed 7 times. The first 
time we want the left margi n set to 0, the next ti me set it to 1 0, and 
the next 20. . . , It would take some time ifwe had to do it manually. 
The WPL program that does all this is below. Clear memory and 
type in the below WPL program. Remember to press the TAB key 
before each line. 

NY 

PND 

PPD.CONSOLE 

L.D2/LETTER 

PPR 

PLMO 

PNP 

PIN Press RETURN To Continue 

PPR 

PLM10 

PNP 

PIN Press RETURN To Continue 

PPR 

PLM20 

PNP 

PIN Press RETURN To Continue 



20 



April/May 1983 



ON THREE 



/// 



/// 



/// /// /// /// 



/// 



/// /// 



/// /// 



/// 



/// /// 



PPR 

PLM30 

PNP 

PIN Press RETURN To Continue 

PPR 

PLM40 

PNP 

PIN Press RETURN To Continue 

PPR 

PLM50 

PNP 

PIN Press RETURN To Continue 

PPR 

PLM60 

PNP 

PIN Done!! Press RETURN To Go Back To The Editor 

NY 
Before savins it, look at the lines 'PPR'. There should be 7 of them. 
After the 'R' in each of them you must insert a control character. This 
is the code that causes Apple Writer /// to clear the screen. If not 
done, the text display will set cluttered up and you won't know 
what is soins on. After each 'R' type 'CONTROL OPEN APPLE \'. 
Just hold the CONTROL and OPEN APPLE keys down and type the 
backslash ("\") key. An inverse (black on white) backslash should 
appear. When you are done save it with the pathname '.D2/TEST.2'. 
If you are all done, execute the prosram with the command 
'[P]DO .D2/TEST.2'. The parasraph will be printed 7 times, each 
one with a left marsin 10 spaces si'sater that the last. You did it! 
Now the question is how? 

Goinsthroush the WPL prosram line by line we will first see what 
the individual lines do and then will be able to look at the prosram 
as a whole. The first line is 'NY'. You should be able to see what this 
line does now. Remember, a WPL command is just the same as a 
normal Apple Wnter /// control command. So the WPL line 'NY' 
becomes [N]Y. What happens when you press control N and then 
Y? That's risht! Memon/ is erased. We should all see now that this 
line clears out memory. You should always use it because you 
never know what will be in memorywhenyou start a WPL prosram. 
All nsht, that wasn't too hard. How about the next line, 'PND"r^ 
This should correspond to [P]ND. Try it!, type CONTROL P and then 
ND. Don't s^t scared, your computer didn't die - it just went into 
the twilisht zone. The command 'PND' shuts off the screen. It 
means No Display. To turn it back on, type in [P]YD for Yes Display. 
The line 'L.D2/LETTER' in WPL translates to [L].D2/LETTER in 
normal Apple Writer /// notation. This loads the file LETTER from 
the disk in the second disk drive into memory. Once loaded you 
can do anythins you want with it. 

The next line is PPR (Control-Backslash). This is the clear screen 
command. Unless you want a mess on your screen use this com- 
mand before you print anythins- Since we want the parasraphs 
pnnted on the screen and not on your printer we use the line 
'PPD.CONSOLE'. This translates to [PjPD.CONSOLE which sends the 
printed output to the screen. 

The line 'PLMO' sets the left marsin to 0. Thus all printed lines will 
start at the leftmost column. The Apple Writer /// translation is 
[P]LMO. Once we have set the marsin we can print the parasraph 
with the line 'PNP'. This translates into [P]NP which simply instructs 
Apple Wnter /// to besin printins the text in memory. 

These lines printed the first version of our parasraph. Since we 
may want to wait a second or so to admire our work we include the 
line 'PIN Press RETURN To Continue'. This line simply waits for us to 
press RETURN. 



The WPL prosram has now printed our first parasraph and is 
waitins for the user to press RETURN so it can so on and print the 
other parasraphs. Once the user presses RETURN, the prosram 
Soes on and prints the other 6 parasraphs. 

Once it is done printins the parasraphs, the line 'PIN Done!! Press 
RETURN To Go Back To The Editor' waits for the user to press 
RETURN and the next line 'NY' clears out memory. Consratulations, 
you just wrote (and hopefully understood) your first true WPL 
prosram. 

The PIN command can be used outside of a WPL prosram. Just 
type [P] and then enter 'IN Press RETURN To Continue'. The screen 
display will show 'Press RETURN To Continue'. Do that and you will 
be back in the editor. 

Someofyou may bewonderins ifthereisaneveneasierwayof 
doins this. Lookins at the WPL prosram you will see that there dre 
seven sets of very similar statements. The basic structure of these 
lines are below: 

PPR 

PLM* 

PNP 

PIN Press RETURN To Continue 

If you replace the asterisk with the numbers throush 6, you will 
set the same WPL prosram li nes as above. The question is, is there a 
way to do that from inside a WPL prosram? The answer is an 
emphatic YES! 

To actually do it we must learn a little more about WPL. Well, let 
me show you the updated prosram and then describe it. Our 
'Better, Faster, Smarter' WPL prosram is below. 

Start PGO Besin 



Pnntit 


PPR 




PLM -MO 




PNP 




PIN $A 




PRT 


Besin 


NY 




PND 




PPD.CONSOLE 




L.D2/LLIItR 




PLMO 




PLM- 10 




PAS Press RETURN To Continue =$A 




PSX 6 


Loop 


PSR Pnntit 




PSX -1 




PGO Loop 




PAS Done!! Press RETURN To Go Back To The Editor =$A 




PSR Pnntit 




NY 




POT 



In the above WPL prosram we use subroutines, error flasS'^s 
and detection, inteser and strins variables, and even a simple 
prosram loop. Before you type it in, remember about inverse 
backslash. Now how does it work'r^ Well, all the commands dre 
described on pases 78-79, 83 and 88-90. If you read over those 
sections of the instruction manual you should understand what's 
soins on. Next timewe will discuss it further. We will also enhance 
the HELP instruction with a couple of new options! Until then, hit 
the books and start learnins (and usins) WPL! /// 



April/May 1983 



21 



ON THREE 



/// /// /// /// /// /// /// /// /// 



/// /// /// /// 



/// 



/// to Ihc Mox 



by Al Evans 



bottom of the screen and 
scroll the other three rows 
of horses offscreen. 



Tame the Running Horses 

Here it is, Apple /// users, the column for crazies, the forum for 
people who want their computer to do AAAGIC and don't 
care about the obstacles. We're not talking about stuff that can 
easily be modified to work on a RadShack or an IBM or even an 
Apple ] [. We're not even necessarily talking about code that's legal 
according to SOS. We're talking about /// to the Max — tricks an 
Apple /// can perform which will astound the lesser computer. 

There are those who preach device-independent code — pro- 
grams which will work on any computer which runs, for example, 
UCSD Pascal or FORTRAN 77. That's great for the majority of appli- 
cations. But this column is about maximum performance. To get 
the best performance from any computer, you must use device- 
dependent techniques which take maximum advantage of its 
special features and abilities. And the Apple /// has special 
features and abilities which make it capable of running rings 
around any computer in its class. So this column will be about the 
hardware and operating system of the /// and software which 
makes special use of them, whether in BASIC, Pascal, or assembly 
language. 

For an easy introduction to our general onentation, we'll con- 
sider the first question asked in our initial column: How did they 
make those horses run? This will be an interactive investigation. 
You'll need an Apple /// of any configuration, an Apple Business 
Basic Disk, and a System Demonstration Disk. The following instruc- 
tions assume that you're using a system with two floppy-disk 
drives. If not, just use the built-in drive and substitute ".D1 " wher- 
ever ".D2" appears. 

First boot up your /// in Business Basic, and put the "SYSTEM 
DEMONSTRATION" disk in drive 2. Don't boot up on the demo 
disk; there's no way to get out of the demonstration, which I'm sure 
you've already seen. 

Now type "LOAD .D2/SHOW" (and press <RETURN>, of 
course). Delete lines 0-8999 and lines 10000-24030. Also delete 
line 91 25 and line 9190. The part of the program which is left is the 
part that makes the horses run. Only fifteen lines. 

Type "INVOKE .D2/HORSES.INV" and "RUN." You should see 
exactly the same horserace shown in the demo program. That 
fifteen lines of BASIC, with the three external procedures HINIT, 
HFRAME(%I), and F^SCROLL, is doing the whole thing^ Unfortu- 
nately, these three procedures are written in assembly language, 
and there's no simple way to find out how they work. Fortunately, 
however, we can find out exactly what they do from BASIC, and 
that's nearly as good. After all, we can always write our own 
programs to do the same thing. 

Anyway, your screen should now look about like Figure 1, all 
covered with horses. We need to get rid of all of them but the top 
line in order to continue the exploration. Press <ESCAPE> to put 
your /// in the escape mode, and use the "up-arrow" and "left- 
arrow" keys to move the cursor just under the lower left-hand 
corner of top row of horses. You won't be able to see the cursor 
when it's there — this is interesting and important, and we'll come 
back to it later. For now, just press "T" to set the top of the viewport 
below the horses we're keeping, then move the cursor to the 




Fisure *1 



WmMMm'.^'^ 










Now move the cursor back directly beneath the row of horses, 
press the space bar to leave escape mode, and type: 

FOR 1=0 TO 3:FOR J=0 TO 7:PRINT CHR$(128-h8*I-hJ);:NEXT: 
PRINT:NEXT 

Congratulations, you just drew your own horse. Your screen 
should now look like Figure 2. Those of you who already know why 
that happened can take a break,- go on and skip the next paragraph. 
Figure ^2 







H E K T : FRl 



■•IT " 



rTu 

r-! E X 



P R I i- rriJHF: i- •: 1 : 



Most of the rest of you do already know that the Apple /// 
system character set is software-defined (like almost everything 
else in the system) and can be changed at any time. In particular, 
characters to 31 [CHR$(0) to CHR$(31)] dre the control codes, 
and are not normally printed on the screen. However, any of them 
can be turned into a printable character by adding 128 to its ASCII 
code [CHR$(0+128) to CHR$(31+128)]. This is just what we've 
done in the line above — printed out the current representations 
of the control codes in four lines of 8 characters each. The control 
characters have been turned into horses!! This is one of the 
major keys to fast animation on the Apple ///. 

Press <ESCAPE> again, movethecursortothe line immediately 
below the horse you just drew, and reset the top of the viewport 
(press "T") to keep it on the screen. Scientifically speaking, we 
know where that horse came from — we can't be completely sure 
the others didn't appear by magic. Now type the following line 
(see Figure 3): 



22 



April/May 1983 



ON THREE 



/// 



/// 



/// 



/// 



/// 



/// 



/// 



/// 



/// 



/// 



/// 



/// /// 



/// 



FOR 1=1 TO 10:FOR J= TO 4:PERFORM HFRAME(%J): NEXT: NEXT 

Figure ^3 



+ ;:;: t: I + J : ' ; H E K T ^ P R I N T ^ r-l E /< T 



n"riv~""r^rr" t g i g ^ f o r 

E ' : :•. .J ::• ^ r^ E :■■< \ ■■ fA e '.< t 



.1 - M T G 4 ■ F' E R F iJ R tl H F R R M 



Seethe horses runi But what's happening now '^ We're not even 
wnting anything to the screen. Not only that, but the horse we drew 
ran right along with the others — hlFRAME(%J), whatever it is, 
couldn't possibly know about our own personal horse! Once 
again, this is a major key to Apple /// animation. 

What happened is that the definitions of those control charac- 
ters were changed "on the fly" under software control. The anima- 
tion IS almost free — not one character had to be re-drawn. Moving 
6 horses was as fast as moving 1. If there could have been a 
hundred little horses on the screen, they all would have moved just 
like those 6. To be specific, the programming technique used is a 
"partial character set upload" — see the Apple /// Standard 
Device Drivers Manual, p. 71 . 

So that's how the horses run. But wait a minute — they also ran 
across the screen. And remember when the cursor disappeared, 
when we first set the top of the viewport 'r^ 

If there's any one of you who hasn't figured out by now that 
"PERFORM HSCROLL" must be the proper command, you really 
should pay closer attention. Go ahead and type it in a few times, 
then we'll analyze what is happening. Figure 4 shows the screen 
after 4 PERFORM HSCROLL's 

Figure ^4 




■ \] E X T ^ P R I h-l T ^ l--^ E ; 



FRHr-iFuTr 



> ■■ NEXT 



1 8 F I 
NEXT 



:iR J = e TO 4 ^PERFORM H 



> F' E R: F IJ R: N H S C R Ci L L 
>PERFORN HSCROLL 
> F' E F: F R: N H S C R L L 
:.PERFORM HSCROLL 



FHmmm . . . The horsesjust slid across the screen. So did all the 
text we put on it! Type "GOTO 9030" and you can see the whole 
horse-and-text race. The horses and letters that disappeared on the 
right re-appeared on the left — looks like this is a circular device of 
some kind. But the color blocksjust stood still. Looks as though the 
horses and text dre in one part of memory, and the background and 
foreground colors are in another. 

And that is precisely the case. The screen memon/of the Apple 
/// IS in two places, both in the system bank ("S-bank"). The 
characters on the 40-column screen (or the odd-numbered char- 
acters on the 80 column screen) are in memory locations $400-$7FF 
(1024 to 2047 for those who speak decimal). The foreground and 
background colors in the 40-column mode (or the even-numbered 



characters on the 80-column screen) are in memory locations 
$800-$BFF (2048-3071). HSCROLL is moving the former, shifting 
each row one column to the right with the character shifted off the 
screen going into the vacated column on the left, without changing 
the latter. 

In the 40-column color text mode, each byte in the screen at 
$800-$BFF IS interpreted as a background color (the low nybble) 
and a foreground color (the high nybble). If both of these nybbles 
dre set to the same value, anything on the foreground screen will 
"hide" behind the background. This explains the disappeanng 
cursor,- both nybbles were set to (black). 

This IS a good example of a device-dependent technique which 
is not even "within the system". As far as I know, there is no way 
these screens can be manipulated separately from a high-level 
language. For those of you who sre interested, the memory maps 
are the same as for Apple ][ text screens 1 and 2. Apple ][ 
assembly-language routines should be fairly easy to adapt for your 
own nefarious purposes. 

What can be done with all this'i^ I don't know about you, but it's 
got my wife and me working on a game, Cap'n Masneto. So far, 
we've got a background of 256 x 128 squares that scrolls in all 4 
directions with wraparound and an animated superhero who is 
normallyaspacemanwithblastingjetpaks but turns intoafluttenng 
butterfly on occasion. The sky's the limit! 

And so, off into the sunset, jetpaks blasting. Next month we'll 
talk about the keyboard map and how to change it. After that — 
well, let me know what you want to do with your Apple ///. In 
particular, send me your own findings and let me spread them 
around — I'll give you full credit, of course. There dre lots of 
completely undocumented bits and pieces in the ///, things 
Apple doesn't think we're ready for. So it was with the ][, back in 
the dark ages. But users, working together and trading ideas, had 
figured the ][ out long before the "real" technical manual was ever 
published. We can do the same. /// 



AppU 


2JLt 


narLiownLoaa: continued . . . 


690 


REM 


<CTRL> CHARACTERS ACTION. 


700 


REM 




710 


REM 


SO <CTRL> [ I 3 IS NOT 


720 


REM 


INTERCEPTED. 


730 


REM 




740 


FOR C » 


32 TO 126 


750 


POKE P,C 


;: POKE DR,1 


760 


POKE p,a 


i: POKE DR,1 


770 


FOR B « 


TO 7 


780 


POKE P,A((C - 32) * 8 + B): POKE DR,1 


790 


NEXT B 




800 


NEXT C 




810 


POKE P,4 


: POKE DR.l 


820 


HOME: VTAB 12: PRlNT "TEST (Y/N) Vw BET Al 


830 


IF Al < 


> "Y- THEN END 


900 


REM 




910 


REM 


t* TEST FONT ## 


920 


REM 


SEND CUSTOM FONT 


930 


REM 


SELECT CODE 


940 


REM 




950 


REM 


PRINT FONT 


960 


REM 




970 


REM 


SEND STANDARD FONT 


980 


REM 


SELECT CODE 


990 


REM 




1000 


HOME 




1010 


PRINT: 


PRINT DrPRfl" 


1020 


PRINT CHRI (27) "-J 


1030 


FOR X » 


32 TO 126 


1040 


IF X / 60 « INT (X / 60) THEN PRIMT 


1050 


PRINT CHRI (X); 


1060 


NEXT X 




1070 


PRINT CHRI (27) -V 


1080 


PRINT 




1090 


PRINT DrPRIO- 


1100 


HOME 





April/May 1983 



23 



ON THREE 



/// /// /// /// /// /// /// /// /// /// /// /// /// /// 



R€VI€UJ ON: gverything 



by Bob Consort! 



PKASO /// Printer Interface 

The PKASO /// printer interface system is a hardware and 
software device that allows the Apple /// to operate with just 
about any dot matrix printer in both native and emulation mode. 
It sives the user the option of printing text, graphics or even screen 
dumps on your parallel printer. 

It will connect your Apple /// to the following printers: Apple 
DMP; Epson MX-70, MX-80, MX-100; NEX PC8023A/C; C.ltoh 8510 
Pro/Writer; Integral Data Systems 460, 560, Prisms, Color Prisms,- 
Okidata 82A, 83A (plus the new 9x senes); or Centronics 739, 1 22 
printers. 

The PKASO system consists of the hardware interface that allows 
you to connect your /// to most any parallel dot matrix printer, the 
necessary cabling, the software device drivers that let the interface 
card work with the///, invokable modules to print out the graph- 
ics screen and a set of instruction manuals to tell you how to 
operate the system. 

First we dre going to take a look at the interface card. Very simply, 
it is the same interface card the the Apple ][ uses. What makes it 
special is the device driver that connects it to the ///'s world and 
the appropriate invokable modules that allow you to pnnt out the 
graphics screen. After installing the device driver on your system 
diskettes you can use a variety of new commands to easily control 
your printer features from within any program or language system. 

The invokable module (or linkable, if you use Pascal) that prints 
out the graphic screens is ven/ flexible and can print out any of the 
Apple /// graphics modes in three different sizes. You can even 
rotate the picture to print out sideways if your printer doesn't have 
a wide enough carriage to print out one of the larger sizes. 

One of the nicest features of this system is the ability to print out 
in color if you have a color pnnterl Your IDS Prism can now print out 
your color graphics screens with this package. Many of you know 
that the /// has a changeable character font and that you can 
re-define the format of the characters that you see on the text 
screen. You have proballyseen some of the different fonts, Roman, 
Byte, Apple etc. With the PKASO /// system you can have your 
pnnter pnnt out text in the same font style that your /// uses! 

You can even dump a copy of the text screen to the printer. 
Anything that is on the current text screen will be exactly dupli- 
cated on the printer. You can dump a 40 or 80 column screen with 
amazing simplicity. 

If you dre printing text or graphics and your printer runs out of 
paper, the PKASO card will put a flashing message on the bottom 
right hand corner of the text screen. This is non-destructive, that is 
to say, anything that was there before will be returned whenever 
you put more paper in the printer. Also, if your pnnter is off and you 
try to use it you will get a printer off line message in the same area. 

One note of concern: Short of turning on the printer or putting 
more paper in, there is no way to get out of the print operation if 
the printer is off-line or out of paper. While you can get out of a text 
or graphics dump by pressing the ALPHA-LOCK key, there is no 
similar exit from either of these conditions. A call to Interactive 
Structures reveals that they are working on a fix to this slight 
problem. 

This brings me to my next point. Interactive Structures, the maker 
of the PKASO /// card has one of the best customer support 
policies I have seen. Even/one there seems to know what is going 



on and sre more than helpful with any problems you may be 
having. I sometimes wonder if their support has tied up too many 
people, but it does give the company a well deserved good 
reputation. 

One of the novelties of the PKASO system is that the instruction 
manuals were printed with an MX-80 printer controlled by a 
PKASO board. The neat part is that it looks quite good! The manual 
that we will discuss is the PKASO /// Printer Driver for Apple /// 
and Matrix Printers Users Manual. 

This booklet tells you everything you need to know about the 
operation of the PKASO driver and associated software that are 
needed i n order for the PKASO board to work with the Apple ///. 
It doesn't assume anything about the intelligence of the user so it 
gives complete information on how to first install the driver using 
the System Configuration Program and then on how to use it. 

Since the SCP isn't easy for first time users, this is a very nice 
touch that other packages should have. After installing the driver, 
the manual shows you how to use this new driver from both Basic 
and Pascal. You can change the size of the characters you print by 
simply entering a new size with the size command. 

The PKASO /// interface has circumvented many of the prob- 
lems of using the features (changing text sizes, column widths, 
setting tab stops, etc.) of a particular printer by creating a system 
that more or less standardizes these procedures. 

Instead of remembering strange character sequences to send to 
each different printer to have it print in say, compressed charac- 
ters, with the PKASO /// installed you will be able tojust type one 
command sequence for all. Since this may not be easy to see, the 
following example may help. 

Normally to have an Epson print in compressed mode (17.16 
characters per inch, others are different) you must send it a 
CONTROL-O. Other sizes can be achieved by sending different 
control codes. These codes are not standard among printers, thus 
what works on an Epson will not usually work on a NEC or others. 

This means that if a program wants to print out data in a different 
size format, it must know what printer it is working on and the 
necessan/ codes for that printer. Since this is asking quite a bit from 
a program, you normally don't have any options when printing out 
items. 

The PKASO /// uses a standard command format that enables 
programs and users to very easily set size and other information for 
avarietyof printers. To have any printer that IS installed on your/// 
print out in compressed mode you would send it the following 
sequence ' E2'. All pnnting operations that followed would be in 
compressed mode. 

Similarly you could have the jnformation printed using the 
following commands '~E0', '"El', '~E2', '^EB', '~E9', '~E10'. Respec- 
tively, this would cause characters to be printed with 10, 12, 16.5, 
5, 6 and 8.25 characters per inch.^ 

As you can see, remembering ' Ex' is a lot easier than 6 or more 
control combinations for printing in different sizes. There is one 
thing that you should be aware of, if your printer doesn't normally 
print with say, 6 characters per inch, the PKASO /// does not let 
your printer do that. If you specify a size that does not exist on your 
printer, the size actually printed will either not change or will be 
the closest size that your printer does support to the one you asked 
for. 

Similarly, you can easily set up to 16 tab stops and clear them. 



24 



April/May 1983 



ON THREE 



/// 



/// 



/// 



/// 



/// /// /// /// 



/// /// 



/// 



/// /// 



/// 



You can also adjust the vertical spacins to be any increment and 
even issue line and form feeds with ease. 

One of the nicest features of the PKASO /// is the ability to 
change the font of the printer from software. Vbu can now print 
out text with the font style you are usins on the screen! Printins out 
text in fancy gothic script is now very easy. You can also choose the 
inverse screen font and get characters pnnted in reverse, white on 
black. Figure *1 shows some of the different combinations 
possible. 

Figure ^1 

tl^is: is t^lne cipplc f oTit. 
here it is caspressed 



Figure ^2 









ma not' iny^rsr copor-E-ssra. 



Tins IS t.iie FlUl'mii font. 
Here it is coipressed 

This is the BVTEI font: 
HerE it is comprBSsed 



Figure ^3 



:i'3^-iQ!iiur.j.;;r ":, ji;*?iiw'ei3?^s^ 



±L]is IS 4. M a lid S .S -4-'^-' '-■« ■+ 
Hdje i^ IS ooidvidssdp 



:^:u.ow! ' • B iti^ti iftia^isa*:- 



TfiiS is ai WEIBD Pont 
B9% it is coBpreoed 



PROFIL 


E2 (85/84/83) U2 








TYPE 


BLKS NAME 


fiOOIFIED TIME CREATED TIME 


tm 


80082 SYSTEM 


03/12/83 00 


57 05/84/83 2 


51 


tPftS)Tft 88803 OPCODES. 6582 


03/07/83 21 


38 85/04/83 2 




tPASJTfi 88088 ERRORS. 6502 


83/87/83 21 


39 85/04/83 2 


53 


tPftSCOB 08124 UTIL.CODE 


03/87/83 21 


39 85/84/83 2 


53 


IW 


90082 SOS 


83/12/83 00 


57 85/84/83 2: 


53 


ICft" 


00082 UIS CftLC 


03/12/83 08 


57 85/84/83 2 


57 


tcft- 


08082 BAS C 


03/12/83 00 


57 85/84/83 2 


59 


tCA 


08881 PASCAL 
80802 ARTICLES 




57 85/84/83 22 


1)5 


tCft 


03/12/83 08 


57 85/84/83 22 


2 


»CAT 


08081 0.0. «. 


83/12/83 08 


57 85/84/83 22 




tCAT 


88809 LETTERS 


83/12/83 88 


57 85/84/83 22 


g 


tCAT 


80881 PES 


85/84/83 22 


34 85/84/8:: 22 


;;4 


ICAT 


08802 SUBS 


85/84/83 22 


37 85/84/83 22 


37 



EOF 

1024 

726 

3570 

62976 

1024 

1824 

1024 

512 

1824 

512 

4608 

512 

1024 



Rd rc'j. inverse cc^^pressed 



Tphis is the ©DfTinLSi-flS *=-ont. 
S^re it is c«Mpr«ssed 



ftou. \Merse conpressea 



You will also be able to print a snapshot of the the text screen in 
either normal or inverse (white on black). Just send ' P2' and the 
80 column text screen will be printed out on your printer. An exact 
duplication of whatever is on your text screen is now possible! 
Figures *2 and *3 give some examples. You may also print out the 
40 column text screen just as easily. 

Printing out text is nice, right? But how about graphics! The 
PKASO /// system allows your Apple /// to do a graphics dump 
of the Hi-Res graphics screen in either Basic or Pascal. Just invoke 
(or link) the necessary routines from one of the disks and you have 
immediate acces to a very fast and versatile graphics pnnt routine. 

You can have a print out of any of the graphic modes that the 
Apple/// supports in a variety of sizes and shades. Another very 
nice feature is the ability to center the picture in the middle of the 
page by setting the margin. You can also stop a print-out by 
pressing the ALPHA LOCK key twice. This is in case you discover 
you're printing in the wrong mode and don't want to wait for the 
whole graphics screen to be pnnted. 

If you dre fortunate enough to have access to a IDS color Prism 
the PKASO /// will do a Hi-Res dump in full color. This is some- 
thing to see! All those pie charts and other graphics screens that 
look great on a color monitor look even better on paper. Since I 
can't give you a full color picture in the magazine (yet) you will 
have to be satisfied with the black and white ones that follow. 
Figures *4 and *5 show these graphics dumps. 

The instruction manuals show you how to use the PKASO /// 



BLOCKS FREE= 1292 BLOCKS USED= 8436 TOTAL BLOCKS = 9728 



system with different software packages. Apple ][ emulation 
mode, Apple Writer ///, Apple Business Graphics, Basic, Pascal 
and Visicalc are all supported. Complete documentation is pro- 
vided on exactly how to use the PKASO /// system from all these 
software products. 

Included on the disks that come with the package dre excellent 
demonstration programs in both Basic and Pascal. They guide the 
user into a good understanding of just what the PKASO /// system 
can do. The manuals that come with the system are very nicely 
done and contain all the information a user (or programmer!) 
would want. 

I know I've left out some of the things that the PKASO /// system 
can do, but some of these are very specialized and the average 
user will never use them. Suffice it to say that the PKASO /// 
system is very, very powerful I. 

Well, we had to come to it sometime. Yes, this package does 
have some bad points! Even though the PKASO /// command 
language greatly simplifies printer operations, it is not used by 
many application programs directly. Rather, the user must still type 
in character sequences (albeit somewhat shorter) to change text 
options and so forth. I'm saying this so that no one will get the 
impression that the PKASO /// is a cure-all. It's certainly not that, 
but it does come close! 

The only other problem is not really a problem at all but just a 
general nuisance. The interface card that comes with the PKASO 
/// fills about 14 of the space for one card in the peripheral card 
well. With all the 'real-estate' available for an interface card you 
would think they could have put some more things on the card. It's 
a shame to waste the space considenng we only have four slots. 



April/May 1983 



25 



ON THREE 



/// /// 



/// 



/// 



/// 



/// /// /// /// 



/// 



/// 



/// 



/// 



/// 



YR 



Fisure #4 
SALES 



RECORD 




lyiii 

IE:: a B 1 

'Y "E: -Hi I-"" 

Fisure #5 




Like I said, it's not really a problem. Thoush, it would have been 
nice to see at least another parallel interface port on the same card. 
Oh well, I'm just dreaminsasain. Maybe the next version! For now 
It's time for the . . . 

Summary 

From what has been said, the PKASO /// interface is a very sood 
product in both quality and ease of use, but should you buy it? If 
you have any of the dot matrix pri nters that this card works with, I'd 
say an emphatic YES! For the money and for what it does, this is the 
card to buy. Interactive Structures, maker of the PKASO ///system 
should be given a round of applause for a ven/ nice Apple /// 
interface card. 

Items used in this review: 

128K Apple/// 

1 external floppy drive 

MX- 100 pnnter 

Interface card: PKASO /// interface for the Apple /// 
Version: ROM - 6.1; Manual - October, 1982; 

Driver - Revision 3 
Contents: Interface card, two instruction manuals, 

two program diskettes. 
Programming language: Assembly, Basic and Pascal 



Operating System: Standard SOS for Apple /// 

native mode, DOS for emulation. 
Copy Protected: No 
Warranty: 90 days 
Cost: $205.00 

The Bottom Line 

PKASO /// system 

Performance: Excellent 
Documentation: Excellent 
Ease of Use: Excellent 
Error Handling: Good-Excellent 
Over All Rating: A 

Quick & Easy Data Master 

The advertising for this program says that it is 'A Data Base 
Program ThatyOU Can Master'. Does this claim hold water'^ Well, 
after a careful review I have found that it all depends on whoYGU 
dre. If you don't mind (or like!) making a moderate amount of 
changes in the Basic program, it's for you. FHowever, if you don't 
know how to program I'd suggest you look elsewhere. 

Another part of the advertising for this program says something 
to the effect. The ideal data base program is one that you can 
design exactly the way you want it: prompts, edits, error messages 
. . .toyourspecifications.'Thisistrue, I alwayswanttomakesome 
changes in the applications programs I own. It is also true that this 
package lets you define all these things. 

Quick & Easy Data Master is a set of Basic programs that allow 
you to modify a generic Basic Data Base Program into what you 
want. It accomplishes this through an interactive question and 
answer session which asks you exactly where you want to put 
prompts, error messages and other items on your screen. 

When you finish answering the questions, a custom stand alone 
data base managment program is created. You can then RUN the 
program and use it. Unlike most other Data Base Managements 
packages, if there is something in the program that you don't like, 
you can change it. 

Since this is an idealized situation, let's say right off that there are 
a few problems with this package. First of all, the documentation 
stinks. The instructions manual consists mostly of bad photo- 
copies. The average user can work around this problem, yet the 
information on the photcopies is also bad. This is a real shame 
because the program has many good points. If the documentation 
was as good, this would be a very useful program. 

Enough of that, let's now look at what the program does. There 
are two program disks in the package. After you boot the system 
disk, a message will be displayed to insert the other disk in the built 
in drive. Next a menu screen will be displayed. The options dre as 
follows: 

D . . . Demo Quick & Easy 
E . . . Edit a program 
R. . . Run Quick & Easy 
X. . . Exit Quick & Easy 

The option 'Demo' allows you to generate a demonstration 
program from a pre-defined format. You can use this option to see 
exactly how a data base program is created by this package. The 
program disks come with two pre-defined formats that you can 
use with the demonstration. One is a simple mailing list format and 
the other is a full blown sales invoicing format. 



26 



April/May 1983 



ON THREE 



/// 



/// 



/// 



/// 



/// /// 



/// 



/// 



/// 



/// 



/// /// 



/// 



/// 



If you choose the 'Demo' option, you will get first hand knowl- 
edge of how the application program was made. If you are going 
to use this package in any way, this option will help you out. You 
can have it run automatically from the pre-defined format or pause 
after each question. A very good learning tool for the beginner. 

You can use the 'Edit' option after you have made your data base 
program and discover you need to make some changes. This is 
particularly useful because you don't have to re-type all of the 
previous program format. If you want to change the menu titles or 
somethings like that, this option makes it easy. 

The 'Run' option lets you use the Quick & Easy Data Master to 
create your custom application program. After answering all the 
questions, your answers will be used to create the program. These 
answers will also be saved so that you may later change them with 
the 'Edit' option, or use with 'Demo'. 

The last option is 'Exit'. You can use this option to leave the 
application program and go to Basic. From here you can RUN any of 
the programs you may have created or any other Basic programs 
you may have. 

Since all the other options sre based on it, we will now discuss 
the 'Run' option. As stated, this allows you to create your own 
custom data base management program. Before you start it up you 
must first design the screen displays that you will use in your 
application program. To do this you must fill in the worksheets 
provided with the system. 

These worksheets sre just pages with numbered gnds corres- 
ponding to screen positions. You fill in what goes where and then 
read it off the page when the program prompts you for where to 
put Items on the screen. This isn't too bad, but the worksheets 
seem to have been designed for a 40 column screen. A second 
page is provided for columns 40 through 80. This is unfortunate 
because it make it a little harder for the user. One other complaint I 
have is that only one sheet is provided, if you're not perfect you dre 
going to have to make some copies. I'd suggest about twenty. 

After you finish designing the overall format for your programs 
screens you should use the 'Run' option to start the creation of your 
program. Nowyou will be asked questions such as the name of the 
program, any title message you would like displayed by your 
application program and other general information. 

The most important questions come next. Here is where you 
must have even/thing figured out on paper. The program will ask 
you the maximum amount of space that should be reserved for 
each field of information. You can't just think about something in 
your head and try to answer the questions, you have to figure it all 
on paper FIRST. 

There is one annoying part ofthis, someone accidentally spelled 
'field', 'feild'. Come on guys, you should of caught that mistake long 
before you released the program. 

Anyway, after you specify how much information each field is 
supposed to hold, you dre asked which field is to be the key item. 
This is the part of the record that is found fastest in a search, and 
some though must go into the decision. If you dre creating a mailing 
list that will be sorted by zip code, the zip code should be the key 
item. However, if you need quick retrieval in another field, you 
should choose that one as the key item. 

You can not set up a double key, whereby you can get to any 
record by either, say name or zip code ven/ fast. I sometimes 
wonder if the people who write data base management programs 
ever finished high school let alone get a degree. Doesn't anyone 
else out there know how to set up a file handler with a double key? 

Getting back to business, after you choose a key field you must 
then say exactly where on the output screen to put all the items in 



the record. Next, enter all the prompts that are associated with 
each field in the record. Now you must indicate what type of 
information is to be entered into each field. Your choices are 
numeric or character data. A zip code and dollar amounts are both 
numeric types of information while a name or address is character. 

One of the nicest features of the program is the ability to have 
your application program detect bad information when it is typed 
in. You can specify that it will be bad input if it in a date format, not 
alphabetic, not a state or not an entry (blank). 

You can cause bad input messages to be displayed if the user 
types in any kind of data that you don't approve of. Thus, if a 
character entered is not numeric,- not found in a specific file, an 
error message can be generated. 

This is a very nice featue that I wish more programs would offer. 
Afterall this information is entered, you must then answer whether 
or not you want additional prompts or headers on the screen in 
addition to what was defined in the prompt specifications. 

The next round of questions you must answer is whether or not 
you need to perform calculations on any of the fields in the record. 
Say you want to take 6% sales tax off of one line and put it on 
another, this procedure will allow that. 

In addition to computed data, this package allows you to share 
data from one program to another by using interactive files. This 
allows you to transfer information from one file to another 
automatically. 

We're done! After quite a few minutes of program design you 
now will have a complete data base management program written 
in Basic that you can make small changes in or major ones if you 
really don't like the way the program is written. 

Now is time to look into the applications programs that it creates 
from your instructions. When you RUN the program it will ask you 
what data file to use in the program. If the file doesn't exist you can 
initialize the new file and then use it. When finished finding or 
initializing the data file, you will get a menu of all the available 
options. They dre reprinted below: 



REPORTING 

M — Make a Report 
P — Print a Report 



DATA ENTRY 

E — Enter Data 
L — Lookup Single Records 
U — Updata Single Records 
D — Delete Single Records 
F — Update Any/All Records 
S — Scan/Modify All Recordrs 
X — Exit Program 
I — Initialize/Fix Data File 



Once you get to this menu you can now choose any of the 
above options. Since there are quite a few, let me just tell of some 
interesting things I noticed with the created programs. 

When you are updating a record in your data base, you can't 
change the key field, it's not allowed. Thus, if the person changed 
his or her name, this program would be in trouble. The lookup 
function is fairly standard, you can search for items using wildcards 
that will match only certain things in each item. 

I've had some intermittent problems with the 'Scan/Modify' 
option. At times it will just not work. It seems that you must first 
attempt and fai I to use this option a few times before it does work. 

You can generate custom reports and save them using the 'Make 
a Report' option of the main menu. You can put the information 
from a data screen into any print format you desire and have the 
computer print your data out in that format. You may also save the 



April/May 1983 



27 



ON THREE 



/// 



/// 



/// /// 



/// /// /// /// /// /// 



/// /// 



/// 



/// 



report specification to disk for later use. 

I have found another intermittent problem with this option. It 
seems that after creatins a report specification and writing it on 
disk, the file is not closed. Because the application program is 
written in Basic, the user can change any part of the program that 
they don't like. 

When pnnting a custom report I have found another serious 
problem with this package. When printing to a disk file, only one 
record is ever written! It seems that the records are printed with an 
absolute record number and thus the only one you will ever see is 
the last one printed. This is only a problem when pnnting to a text 
file on disk. Pnnting to the console or pnnter is fine. 

For those few who want to make some changes to the program, 
four pages in the manual dre devoted to technical information of 
the program. The major program vanables are explained and the 
major routines in the program are documented. Even the B-Tree file 
handler (and how to use it) is explained. 

Below are some timings I made of the programs performance. 
Beware, they will change depending on the number of active 
drivers, and the size and speed of any disk drives you may have in 
your system. I usedastandard Apple ///floppy in my tests. Hard 
disk drives (of course) will give much quicker operations. 

Boot Time: 22 seconds with given drivers. 
Pnnt 100 labels to disk: (below design) 5:20. 

Name: 



Address: . 



City: 



State: 



.Zip: 



Disk Capacity: (above design): Approx. 950. 

Summary 

With a little better documentation and quite a few minor 
program changes this would be a very useful data base manage- 
ment program. However, if you don't have the knowledge or time 
to make those changes - it's not foryou. As I see it, this package is a 
good buy for people willing to play around with a program that is 
generally good, but needs some work. 

Advanced Software Technologym Inc. is to be commended 
with leaving their programs 'Open' so that people can tinker with 
them. Very few other manufactures will do this and for mostly that 
reason (the price is good too!) I find that this program is worthy of 
our support, even if it does have some major problems. /// 

Equipment used in the review: 

128K Apple/// 

1 external floppy drive 

Program: Quick & Easy Data Master for the Apple /// 
Version: Program created 3/4/82 

Contents: Two program diskettes, User's manual 

Programming language: Basic 

Operating System: Standard SOS 

Copy Protected: No 

Disk Warranty: None 

Cost: $69.95 



The Bottom Line 

Quick & Easy Data Master 

Performance: Poor-Fair 
Documentation: Poor 
Ease of Use: Fair-Good 
Error of Handling: Good 
Over All Rating: C 

ProFile & Backup /// 

ProFile 

The ProFile drive for the Apple /// is a fixed-media random 
access SVa inch disk drive and disk controller card with a capacity 
of 5 megabytes (that's 5 million bytes!). That's a description of 
Apple's hard disk. For a little closer look at this device, read on. 

If your data files feel a bit cramped using the standard old 140K 
floppies or if you just need faster disk operations, a hard disk may 
be for you. The ProFile will store the equivalent of 35 floppy disks 
and access the information about ten times the speed of a floppy. 

This sounds great, right? Well, there are some drawbacks. First, 
unlike a floppy disk drive, you can't remove the disks. That is what 
'fixed-media' means. Thus you dre stuck with the disks that are 
sealed in the drive. The second problem is that it's only 5 mega- 
bytes. I know that it may seem like a lot, but after you begin putting 
all your software and data files on ityou will seethatyou may want 
more room. The last major problem is that the interface card that 
connects your /// to the ProFile only can attach to one ProFile. 

The first two problems aren't that great, but the last one is. Since 
the Apple/// has only four slots we must be careful how we fill 
them. Other disk interface cards allow you to hook up to a total of 
four disk drives, and I find that using up a whole slot for just one 
disk drive is just plain crazy. There is more than enough room on the 
ProFile interface card to do this and I can't see why Apple didn't at 
least put two interfaces on the card. 

Oh well, you can't have even/thing. The ProFile is a very well built 
and reliable disk dnve. I understand that to date not one has been 
returned to Apple due to a hardware failure. Now that's a very 
good number! I've had mine for about 17 months now and have 
yet to loose any data. 

One of the things that makes the ProFile so reliable is that 
whenever you turn it on, it goes through a self-test procedure that 
does a complete surface analysis of the disk, checking for any 
marginal areas. If a bad sector is found it is automatically spared out 
to one of the sectors that is kept off-line for these purposes. 

What's all this stuff about 'spared-out"? Well, the ProFile disk 
drive has a storage capacity of 9792 blocks, or a little over 5 million 
bytes of information. The average user will see somewhat less than 
that however. 64 of those 9792 blocks are reserved (or spared). 
When it performs the self-test these are the blocks that dre used if a 
bad block is found on the disk. 

Even though I have not lost any data, I have encountered bad 
blocks on the ProFile disk drive. These have always given some 
strange disk I/O error message. After getting these bad blocks I 
have been able to recover by simply turning off the drive and then 
turning it back on again. When it went through the self-test it found 
the bad blocks and replaced them with fresh new ones. 

This is a very nice feature that I don't thi nk any other drive offers. It 
is well worth the extra 60 seconds or so it adds to the time it takes 
before the disk can be used. Now all your programs can use larger 



28 



April/May 1983 



ON THREE 



/// 



/// 



/// 



/// 



/// 



/// 



/// 



/// 



/// 



/// /// 



/// /// 



/// 



data files than what are allowed on the standard 140K floppy. 

The instruction manual that comes with the system shows you 
exactly how to install the disk interface card and add the ProFile 
disk driver to your boot diskettes. If you don't want to, your dealer 
will install the interface and the necessary driver, but the manual 
does sive you all the details. It also devotes a chapter to how the 
drive operates. I don't think that any user would ever need the 
information in that chapter, but if you want to know exactly how 
the drive works, there's a chapter for you. 

There is also an appendix on how to add Pascal system files to 
the ProFile. This is not a very sophisticated method and you would 
be better off if you added Pascal to the ProFile usins Quark's 
Catalyst or Dr. Jcppson's Pascal Patch. 

One of the nicest features of the ProFile is the demonstration 
program that comes with the system. A color graphics demo 
second to none! Wei I over one hundred pictures dre stored on the 
ProFile and are displayed by the controlling program. It's a real 
sight to see! 



Backup /// 



One of the strong and weak points of any large capacity disk 
drive IS its abilib/ to store very large files. A strong point because 
you can make larger files than with a floppy disk. A weak point 
because you can't make a copy of a 2000 block fi le on a 280 block 
floppy disk. 

The program Backup /// was created to solve this problem. 
Ven/ simply put, the program allows you to copy information from 
one storage device (a ProFile) onto a number of disks in another 
drive (a Disk ///) and later restore the information if needed. 

This means that you can copy any ProFile file too large to fit on 
one diskette onto several diskettes. You can even do a full volume 
backup and store everything on the ProFile to floppy disks. A 
variety of options also let you backup and restore selected files to 
and from the ProFile. A very sophisticated and easy to use program, 
it is now supplied with each new ProFile that is sold, and has been 
sent to some current ProFile owners. 

I said some because! have received many calls and letters from 
people who say they bought their ProFile months and months ago 
and have yet to receive their copies of Backup ///. I wish I could 
say that the reason that they didn't get their copy was because they 
didn't send in their registration card, but I can't. One gentlemen 
who phoned me said that he bought his ProFile in June of lastyear 
and promptly sent in his registration card, but has yet to receive 
Backup ///. After many calls and letters to both his dealer and 
Apple he still has not gotten his copy. 

If you have ProFile and do not have a copy of Backup /// and 
your dealer can't get one for you, address your complaints to the 
following person: 

Clayta Morand 

Peripheral Systems Marketing 
Apple Computer, Inc. 
2720 Orchard Parkway 
San Jose, California 95134 

After spending a couple of thousand dollars on a ProFile, Apple 
should be a little more responsive to these problems. 

The User's manual that comes with Backup /// is one of the best 
that Apple has ever done. Not just a reference booklet on how to 
use the program, it is a complete tutorial that shows you exactly 
how to backup and restore your files. 



Backup /// will also format disks so you don't have to first boot 
the System Utilities Program and format the disks there. When 
backing up files you won't be caught without a useable diskette 
because with this program you can just take a blank diskjust out of 
the box and let the program format it. 

Backing up files couldn't be simpler, you just specif/ which files 
you want to use and insert the disks when prompted to. The 
program f rst verifies that the disk is good and then begins the 
copying. When finished putting information on that disk, it again 
verifies the disk to give an extra level of assurance that your backup 
disks dre good. 

There are three options for backing up your f les. You can backup 
by Pathname, backup Modifed files and backup by Date/Time. 
With these options you can specif/ many different file combina- 
tions to backup by. 

The backup by Pathname option lets you backup an entire 
volume or part of a volume. You can use a device name, pathname, 
or a file pattern. The wildcards used in the file pattern dre the same 
as used by the System Utilities Program. 

The backup Modified files option lets you backup files that have 
been modified since you last made a backup. Thus if you have 
added or changed f les on your hard disk since the time you last 
backed it up, you can use this option to copy only the files that 
have been changed. This is very useful if you have changed quite a 
few files on a number of subdirectories and can't remember where 
all of them dre. 

The backup by Date/Time option lets you backup files based on 
the date and time of last modification. Thus you could specif/ to 
make a backup of only files that have been modified since a certain 
date. This is useful only if your Apple/// has a functioning clock. 
Otherwise you must have set the date and time with the System 
Utilities Program for it to be of any use. 

Restoring files is just as easy. Just specif/ which files you want to 
restore and insert the proper disks when prompted. Very, very 
simple! Towards the end of the manual is a section devoted to 
examples of using Backup /// to backup and restore files. Just 
another nice feature of this manual. 

Three appendices cover everything from hints to a list of com- 
mands and even a complete section on error messages and how to 
recover from errors. It would have been better if these were 
reproduced on a handy reference card, but just being there is very 
good. 

Ifyou have another disk drive, suchasoneoftheMicro-Sci high 
densif/ disks, you can use Backup /// to backup files with greater 
ease. Using the Micro-Sci A1 43 disk drive that holds four times the 
amount of a normal disk drive (over half a megabyte!) you can 
back up an entire ProFile with 10 disks or less! While a full volume 
backup of the ProFile onto standard 140K disk drives takes about 
90 minutes, using the Micro-Sci A143 it only takes about 30 
minutes. 



Summary 



The ProFile - Backup /// combination is a fantastic tool for all 
Apple /// users. With the speed and capacity of the ProFile and 
the backup abilities of Backup ///I highly recommend these items 
to all Apple ///users who find that the Disk/// is just too limited. 
With the addition of a high density disk drive by Micro-Sci, this tool 
is further enhanced. 



April/May 1983 



29 



ON THREE 



/// /// 



/// /// 



/// 



/// 



/// 



/// 



/// /// 



/// 



/// 



/// 



/// 



Equipment used in the review: 

128K Apple/// 

1 ProFile hard disk drive 

1 external floppy drive 

Item: ProFile Hard Disk Drive & ProFile driver 

Version: Driver - Version 1 .30 

Contents: Interface card, ProFile Hard Disk 

Owner's Manual, two prosram diskettes. 
Operating System: Standard SOS 
Warranty: 90 days 
Cost: $2199 

Item: Backup/// 

Version: 1.0 

Contents: Backup /// User's Manual, Program Diskette 

Programming language: Pascal 

Operating System: Standard SOS 

Copy Protected: No 

Disk Warranty: 90 days 

Cost: Included with ProFile Disk 

The Bottom Line 

ProFile - Backup /// System 

Performance: Good-Excellent 
Documentation: Excellent 
Error Handling: Excellent 
Over All Rating: A 

CRITICAL PATH SCHEDULING 

If you dre responsible for project scheduling, you know about 
the hours of planning and re-planning involved in the execution of 
a complex project. With the computer age upon us, it was just a 
matter of time before project management could be simplified. 
The CRITICAL PATH SCHEDULING system by Great Divide Software 
is the management tool that does just that. 

I am going to assume that the reader knows a little about critical 
path and stuff of that nature. A detailed explanation is beyond the 
scope of this review so it will be left out. This review will show if 
the system is easy to use, and any problems (or strong points) that 
the package has. 

To start off, the CRITICAL PATH SCHEDULING system is a collec- 
tion of Basic programs that provides project managers a tool for 
defining and analyzing the overall concepts of a project and 
provides a powerful method for scheduling the many tasks neces- 
sary to complete the project. 

Using the CRITICAL PATH SCHEDULING system, it is easy to insure 
that all importanttasksare included atthestartofthe project. Using 
the information that the user furnishes for each task, the program 
analyzes the whole project from start to finish. A report can then be 
compiled that lists every task, with start and completion times. 
Also shown on the report are the tasks that are most critical to the 
completion of the project. 

Each task generates an early start and finish date, and a late start 
and finish date. These dates are the earliest a task can be expected 
to start and end, and the latest the task can be postponed without 
affecting the completion time of the project. The difference 
between these two dates is called the 'float' and is included on the 



report. Also included is the 'free float' which is the amount of time 
a task can be delayed without affecting any other task or the 
completion date of the project. 

The project reports can be in a variety of formats. Reports by 
early or late start, node or float order dre all possible. Special 
formats such as five, six or seven day work weeks are a snap to 
prepare. You can also specify up to 100 non-working days in any 
project. Another very nice feature is the ability to do a report 
without specifying a start date for the project. Thus you can 
determine the length of time a project will take, regardless of the 
starting date. 

The package comes complete with a detailed user guide/ 
instruction manual and two program diskettes. Since the creators 
of this program rightfully realized that hard disks will give much 
quicker program operations, they included the capability of put- 
ting the CRITICAL PATH SCHEDULING system onto your hard disk. 

When you first boot this system, a system configuration menu 
appears. Simply put, you have the option of putting all of the 
programs and data on the hard disk, programs on diskette - data on 
hard disk, or both programs and data on diskette. You can later 
change this if you wish. Thus you are not forever stuck with your 
CRITICAL PATH SCHEDULING system on diskettes or hard disk. 

If you decide to put the programs on your hard disk, they dre all 
moved automatically. This process takes about four minutes with 
the ProFile. You can manually turn the screen off ('CONTROL 5') to 
speed this up a bit. 

The boot diskette that comes with the system has the '.PROFILE' 
hard disk driver on it, so you won't have to put any overtime in with 
the System Utilities Disk. You aren't locked in to just the ProFile 
either. Where the programs are put is entirely up to you. If you want 
to use a hard disk other than a ProFile, you will have to add its driver 
to the boot disk's SOS. DRIVER file. 

Theabilitytotransfer programs to a hard diskisseldom found in 
the computer programs of today and I applaud the people at 
Great Divide Software for integrating their software in this manner. 

The CRITICAL PATH SCHEDULING system allows multiple pro- 
jects to be on a hard disk at once. It also allows you to switch 
between projects very quickly. With the programs on the hard disk, 
a menu of current projects is displayed upon booting. Choose the 
one you want and you get it. If you want to change from one to 
another you don't have to reboot the system, just choose one of 
the menu options and you can go to a different project. 

One of the nice things about the CRITICAL PATH SCHEDULING 
system is that it comes with a set of sample data. This al lows you to 
practice using the system before you set up your own projects. 
With this you don't have to worry about hurting your own data! 

After choosing the projectyou wanttoworkon, the main menu 
is displayed. It is reproduced here as figure ^1 . 

Figure ^1 

CRITICAL PATH SCHEDULING SYSTEM MENU 
SAMPLE PROJECT 



►0 QUIT 

► 1 ENTER/ ACCESS PROJ. I NFC 

► 2 ENTER TASK DATA 

► 3 ACCESS TASK DATA 

► 4 PRINT TASK DATA 

5 SORT AND TEST DATA 

6 CALCULATE CRITICAL PATH 



SWITCH PROJECTS 
MOVE FORMATTED REPORTS 
CREATE/COPy/DELETE A PROJECT — ►! 
DESIRED OPTION NO 



BASIC REPORTS 

00 CRITICAL PATH REPORT 

01 KEY WORD LIST 

►12 MANPOWER REPORT 
►13 TASK BAR CHART 

DATED REPORTS 

►14 CRITICAL PATH REPORT 
►15 KEY WORD LIST 
►16 MANPOWER REPORT 
►17 TASK BAR CHART 



] SPOOL REPORTS 
? 



30 



April/May 1983 



ON THREE 



/// 



/// /// /// /// 



/// 



/// 



/// 



/// 



/// 



/// 



/// 



/// 



/// 



As you can see, arrows point to some of the options. These are 
used to indicate which options dre currently available for use. The 
above example shows that we are using the 'SAMPLE' project that 
is included with the system. Since there is data, there are arrows 
pointing to options 0-4 and 7-18. These dre the ones we can 
presently use. 

One feature of the system that I don't like is option ^0. This is the 
'QUIT' option and if you press and RETURN, you can not recover 
the program. There should be some prompt message asking if the 
user really wants to quit. Over the past couple of months I have 
accidentally chosen option #0 many times. 

The instruction manual that comes with the CRITICAL PATH 
SCHEDULING system isven/good. It contains step by step instruc- 
tions that leads the user through the system. Whi le not typeset, the 
instruction manual comes in three ring binder format. One of the 
biggest reasons that I like the manual is because the pages are 
printed on only one side. Thus there are no readability problems 
due to seeing the back side of a page through the front. 

After prepanng your project's data using the example in the 
instruction manual, you enter the project information using option 
#1 of the main menu. Here you tell the program the name of the 
project, the starting month, day and year. Also i ncluded is the work 
week type (5,6 or 7 days), and the non-working days during the 
project. 

Here you will also specify where to send any report, in other 
words - which printer driver. This will normally be '.PRINTER', but 
the user can change it to any configured pri nter driver. You can also 
specify any control characters to send before pnnting the report. 
This enables you to force compressed printing to squeeze more 
information on a page. 

A report heading can also be specified which will appear at the 
top of all printed reports. This can be up to 60 characters long. To 
maximize memory use in the Apple /// this option also asks you to 
specify the maximum number of tasks your project will need.Upto 
2150 can be specified, but it's best to use the default value (1000) 
unless you know you will need more. 

The next three options (number's 2-4) are used to enter, update 
and print the task data. These processes dre very simple due to 
good instructions and screen menus. Complete editing functions 
dre included so the user will not have to re-type the entire task data 
due to a single mistake. 

Option number 5 sorts and tests the task data. It tests to check 
that the data is correct before you compute the critical path. You 
can also have the program directly go to option number 6 and 
compute the cntical path if the data is correct. Any errors are 
displayed on the screen for the user to see and later correct. 

If you have finished with your work on one project and want to 
go to another, option number 7 allows you to switch projects 
without rebooting the system. Each project's task information is 
kept on a different set of data disks, or on different subdirectories if 
you are using a hard disk. 

Option numbers isa bit confusing. It allows you to view report 
files stored on disk, move the report files to a printer, and delete 
report files to regain disk space. Now what is a report file? Well, 
that's not so hard. They sre CRITICAL PATH SCHEDULING reports 
that are saved on a disk instead of being printed on a printer. Now, 
option numbers aliowsyou to manipulatethese reports, but how 
do you create them? There isn't anything in the table of contents! 

After much searching (two days worth) I finally found out how 
to do it. Directlyafterthedescnption of option number4 there are 
two special notes. The first of these is how to get a report printed 
on the screen. After using the system for a while I had found 
this out. All you do is press 'OPEN APPLE S' and the report will be 



pnnted on the screen. I learned this because on the report options 
menus there is a line that says to press 'OPEN APPLE S' to get a 
screen pnnt-out. 

The second of these special notes is how to pnntthe reports to a 
disk file. Instead of pressing 'OPEN APPLE S', simply press 'OPEN 
APPLE F' and you wi 1 1 be prom pted for a Fi le to send the report to. 
Why doesn't this merit a special line like the pnnt to screen line? I 
don't know! There should at least be a section in the table of 
contents on how to accomplish it. Hopefully the people at Great 
Divide Software will fix this little bug before it gives anyone else 
headaches. 

Whi le we dre on the subject, about the only other problem in the 
manual is on pages 34 and 35. On these pages it states that there 
are two formatted reports on the diskette that comes with the 
system. In the manual they are called SAMPLE1 & SAMPLE2, yet they 
dre not on the diskettes that I received. 

Option number 9 allows the user to create, copy and delete 
new projects. This is very useful, because the user doesn't have to 
boot up the System Utilities Disk to make a copy of their important 
task data. 

Options 10 through IS are used to print reports in a variety of 
options. Reports using early and late start dates, float and node 
order are easily pnnted. One of the nice features is the ability to 
print out a key word report. With this capability you can print a 
selected portion of the cntical path report based on a 'keyword' in 
the description of the tasks. 

Thus you can specify work that is say, subcontracted out by 
putting the word 'Sub' in the description of each task and later 
print out only that portion of the report whose tasks descriptions 
begin with 'Sub'. A very useful feature. 

Manpower reports that indicate the total manpower required 
for each task can be printed, giving the project manager total 
control in the determination of crew size. 

Probably the most important report option is the 'Task Bar Chart'. 
This report gives the same basic information as the other reports, 
but gives it in a pseudo-graphical format. In this way, the user can 
see how various tasks relate to each other. Text symbols (*=) are 
used to show critical and non-critical tasks in the project. 

This is a very nice feature because it shows the user exactly 
which tasks can be delayed, and when they must be completed. 
Though nice, I think it should be done a little differently. With the 
exciting graphics capability that the Apple /// offers, a much 
better implementation should have been written. 

On each report you can have the current date printed. The 
problem here isthatyou must enter the date manually. Since many 
Apple /// owners now have a clock installed, programmers 
should use the clock instead of always asking the user to supply 
the date. 



Summary 



The CRITICAL PATH SCHEDULING system is a very useful tool for 
anyone who is involved with project planning. It isn't a Lisa Project, 
yet it does provide a very useful function for project managers. 

The few minor problems in the program and documentation are 
hardly enough to turn me away from the program, but the price 
$495 makes me think twice. Because it is written in Business Basic, 
the more advanced user is able to tinker with the system to adjust it 
more to his or her needs. Since it does have many fine features, I 
think it deserves our support. 

Overall the CRITICAL PATH SCHEDULING package does help 
project managers do their job, so this may be the package foryou. 

Continued on page 9 



April/May 1983 



31 



ON THREE 



/// /// /// /// /// /// /// 


/// 


/// 


/// 


/// /// /// /// 


Three Shorts — Fini! 








by Devin Sexson 



The followins are snappy little sraphics exercises with levels of 
complexity and thoughtfulness that are unusual. 
To use, just type them in and save them. Make sure the Basic disk 
is on-line and t/pe "RUN." The Basic disk is needed because the 
file "BGRAF.INV" is used. 

ON THREE will pay $25 for any short demonstration program 
used in this space, so send in your favorite today, and we will see 
you next time on ON THREE. /// 



REH f«*tf«»<*fti*fttf«tf«itt»fif>fff>it»t*««f«f 



REH 
REH 
REH 
REH 
REH 
REH 
REH 
REH 



Dazzling Rectangles 



32 



9 

10 

20 

30 

40 

50 

&0 

70 

99 

100 

110 

120 

130 

140 

150 

l&O 

170 

180 

190 

200 

1000 

1010 

1020 


1 
2 
3 
4 
S 
b 
7 

e 

9 

10 

20 

30 

40 

50 



This short prograe displays a neat 
pattern oi dazzling rectangles in full 
color. To use, type in the prograe 
and then 'RUN'. Hake sure you have 
the '/BASIC/B6RAF.INV' on-line. H 
not, enter the correct pathnaie. 

REH l*««fHlt»»l*«ttl««llftft«i«»fl«f»iti«»ftf* 

ON ERR INVOKE'/BASIC/BBRAF.INV 
PERFORH initgrafix:OFF ERR 
PERFORH grafixiodeiZl,!!) 
PERFORH grafixon 
PERFORH fillport 
il«3!xM:zX-279:qI»0:yX-191 
PERFORH vieMport(!xZ,ZzZ,Iq!,lyX) 
ON KBD BOTO 1000 
FOR rl=l TO 99 

pcZ>pcZ+l:IF pcZ«U THEN pcZ>l 

PERFORH pencolor(ZpcZ) 

PERFORH ■oveto(ZxZ,ZyZ) 

PERFORH lineto(ZzZ,ZyZ) 

PERFORH lineto(ZzZ,ZqZ) 

PERFORH lineto(ZxZ,ZqZ) 

PERFORH lineto(ZxZ,ZyZ) 

xZ«xZ+iZ:yZ»yZ-iZ:zZ»zZ-iZ:qZ=qZ+iZ 

NEXT rZ 
TEXTtEND 

IF KBD>27 THEN POP: TEXT: HOHE: END 

ON KBD SOTO 1000 

RETURN 



REH t*ftii»iitti»t(*t«»tti««t«ii«t«t««fi«tttt«* 



REH 
REH 
REH 
REH 
REH 
REH 
REH 
REH 



Randoi Triangles 



bd PERFORH vieHport(Z0,Z139,Z0,Z191) 

99 ON KBD 60T0 1000 

100 FOR r»l TO 20 

110 xlZ>139*RND(l):ylZ«191fRND(l) 

120 x2Z>139«RND(l):y2Z>191«RNDU) 

130 x3Z«139iRND(l):y3Z'191»RN0a) 

140 PERFORH pencolor(ZRND(n»li) 

ISO PERFORH lovetoaxlZiZylZ) 

liO PERFORH lineto(Zx2Z,Zy2Z) 

170 PERFORH lineto(Zx3Z,Zy3Z) 

180 PERFORH lineto(ZxlZ,ZylZ) 

190 NEXT 

200 xlZ*139»RND(l):ylZ>191iRND(l) 

210 x2Z»139tRND(l):y2Z>191«RND(l) 

220 PERFORH vieHport(ZxlZ,ZylZ,Zx2Z,Zy2Z) 

230 PERFORH fillport 

240 PERFORH vieMport(Z0,Z139,Z0,Z191) 

250 BOTO 100 

999 TEXT: END 

1000 IF KBD=27 THEN POP:TEXT:EHD 
1010 ON KBD 80T0 1000 

1020 RETURN 



This prograi Hill display a nuiber of 
tringles of randoe size, in a variety 
of colors. To use, enter the prograi 
and then 'RUN'. Hake sure that the 
file '/BASIC/B6RAF.INV' is on-line. 
If not, enter the correct pathnate. 
REH i««f«fti«fttt««f«(*»»*t««««*i«>tfff*f«t«ft* 

ON ERR INVOKE'/BBRAF.INV' 

PERFORH initgrafix:OFF ERR 

PERFORH grafixeode(Z3,Zl) 

PERFORH grafixon 

PERFORH fillport April/May 




1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
20 
30 
40 
50 
60 
99 
100 
110 
120 
130 
140 
150 
l&O 
170 
180 
190 
200 
210 
300 
1000 
1010 
1020 
1983 



REH f*Hi»t«««f«fft*itti»f«»>tf»»t*titH«fitf«« 



REH 
REN 
REH 
REH 
REH 
REH 
REH 
REH 



Hoving Color In A Diaiond 



This prograa will display a pattern 
consisting of a colorful diaiond ttith 
colors constantly changing within it. 
To use, type in the prograi and then 
'RUN'. Hake sure that you have the 
file '/BASIC/B6RAF.INV' on-line. 

REH t«t*HHHtt«H«««tf»tt«t«tt»*tfHf»t«t(ifi 

ON ERR INVOKEVBeRAF.INV* 
PERFORH initgrafix:OFF ERR 
PERFORH grafixiode(Zl,Zl) 
PERFORH grafixon 
PERFORH fillcolor(ZO) 
PERFORH fillport 
ON KBD 60T0 1000 
zZ«l:gZ>280:hZ>96:aZ'140:cZ>23& 
dZ«140:eZ«-44:iZ=0:jZ=96 
FOR kZ«23i TO 97 8TEP-1 
fZ«16fRND(l):PERF0RH pencolor(ZfZ) 
PERFORH lovetoiZaZ.ZcZ) 
PERFORH lineto(ZgZ,ZhZ) 
PERFORH lineto(ZdZ,ZeZ) 
PERFORH Iineto(ZiZ,ZjZ) 
PERFORH lineto(ZaZ,ZcZ) 
gZ>gZ-zZ:hZshZ-zZ:dZ>dZtzZ:eZ«eZ+zZ 
iZ»iZ+zZ:jZ«jZ*zZ:aZ«aZ-zZ:cZ»cZ-zZ 
NEXT kZ 
TEXT: END 

IF KBD«27 THEN POP: TEXT: HOHE: END 
ON KBD 60T0 1000 
RETURN 



ON THREE 



/// /// /// /// 



/// 



/// 



/// /// /// /// /// /// /// /// 



Lazarus /// (Undelete 
your deleted files!) 

How much are your important data files worth? $100, $1000? 
Even ifyou back upyourfiles regularly, the one fileyou accidentally 
delete will be the one you haven't ever backed up. 

Wouldn't it be great if you could somehow regain those files you 
deleted? Well, with Lazarus /// - you can! Very easy to use, just 
insert the diskette with the files you deleted and Lazarus /// will 
recover it. Completely user friendly, this program has on-line help 
and tutonal screens to aid in the use of the program. It even works 
with ProFile and other disk drives! 

If you order this program today, you can get it for the pre- 
introductory price of $24.95. Orders postmarked after July 30, 
1983 will be sold at the full pnce of $29.95. This program will be 
shipped on July 30, so place your order today for the best Apple 
/// utility in town. Please add $1.50 for shipping and handling. 



Disk Of the Month 

Do you have the time to type in the programs in each issue of ON 
THREE? Wouldn't it be great if there was a way to get all the 
programs without having to type them in? - There is, all you have to 
do is buy the disk! 

DOM # 1 - Extra Disk Space Plus! 

This disk contains all the programs contained in the January and 
February-March issues ofON THREE. Included areDiskPakI, which 
will give you four extra blocks of disk space on all your data disks (a 
very handy feature for those budget conscious people who don't 
have a hard disk!),- Disk Pak2, which lists the files on a directory 
using Pascal; all of the Graphics and Sound Demos and much, 
much more! 

DOM #2 - Changing the Characters 
Of Your Printer 

This diskcontains-a program that will do a most amazing thing, it 
will enable you to change the characters that your Apple Dot 
Matrix (or Prowriter) printer prints with. Now your DMP can print 
with the same characters that dre shown on your text screen. Fancy 
Gothic letters and many other fonts are now available to use on 
your printer. Complete documentation makes this program very 
easy to use. Also included on this disk is a program to list the files 
on an Apple ][ DOS diskette and many more graphic 
demonstrations. 

For only $9.95 (plus $1 .50 for postage and handling) you can get 
either of these great packages. If you want to order both you can 
get them for the extra low pnce of $15.00 (plus $2.00 for postage 
and handling). Order today! 

Group rates are as follows: 

2-9 disks: $7.50 apiece + $2 total shipping 

10-24 disks: $7.00 apiece + $3 total shipping 

over 24 disks: $6.50 apiece + $4 total shipping 

Group rates must have one mailing address. Please use the 
attached envelope for orders. If the envelope is missing, send to: 
ON THREE 
Attn: ORDER DEPT. 
P.O. Box 3825 
Ventura, California 93006 



ON THREE O'clock 

Calling all you time conscious Apple /// owners out there. How 
would you like a working clock/calendar foryourApple///? Just 
as it was originally intended, this kit comes complete with a plug in 
clock chip with a battery backup. 

With ON THREE O'Clock installed, any timeyou save or modify a 
file, the current time and date will be stored on disk. Thus you will 
now be able to tell which file you last worked on. Your programs 
can now use the Apple /// built-in date and time routines to give 
you an up to the second read-out of what time it is. 

Extremelyeasyto install and adjust, it is completely compatible 
with SOS and doesn't use up a slot! This is the one you have been 
waiting for! The package contains comprehensive instructions and 
a Six Month Warranty! Try to get that deal anywhere else! 

What's the best part? - The price! While others are selling theirs 
for $60 and up, we have broken the $50 barrier. Heck, we broke the 
$40 barrier! 

For only $39.95 (plus $2.50 for postage and handling) you can 
get the best little clock in town! 

Group rates are as follows: 

2-9 clock sets: $36.50 apiece + $5 total shipping 
10-24 clock sets: $33.25 apiece + $7 total shipping 
over 24 clock sets: $31 .00 apiece + $9 total shipping 
Group rates must have one mailing address. Please use the 
attached envelope for orders. If the envelope is missing, send to: 

ON THREE 

Attn: ORDER DEPT. 

P.O. Box 3825 

Ventura, California 93006 

For prices that ore out of this uuorld... 




Buy ON THR€€ products!